2020-01-08面向对象思想基础、类的介绍、对象的应用、封装属性中的隐藏属性

面向对象编程:核心是对象,对象就是一个盛放数据与功能的容器
基于该思想编写程序就是创造一个个容器
优点:扩展性强
缺点:编程复杂度提升

类与对象
定义类发生的事 :只有相同属性的事物才能被分为一类,定义类名用驼峰体,类一定义就会产生一个名称空间
1、立刻运行类体代码
2、将运行过程中产生的名字都丢进类的名称空间

调用类发生的事:
1、创造一个对象的字典,用来存放对象独有的数据
2、将对象与类建立好关联
调用类的过程
1、先创造一个空对象
2、自动触发类内的__init__函数的运行,将空对象当做第一个参数自动传入
3、返回一个初始化好的对象给obj1

obj1 = Student("tom",19,"female")

obj1.name  等于 obj1._dic["name"]

对象.属性的查找顺序:先从对象的字典里找,若对对象中没有数据,再从类的字典里找类里存储的数据就是为对象准备的
类.属性:只从自己字典里找,
注意:类里的数据一改,指向其数据的所有对象都会改变,但对象里的数据一改只会影响更改的那个对象。
类中的数据属性是直接共享给所有对象用的类中的函数,类可以用,如果类来调用就是一个普通函数,该怎么传参就怎么传参
但其实类中的函数是给对象用的,对象来调用就是一个绑定方法,绑定方法的特点是会将调用者当做第一个参数自动传入
所以在类中定义函数,函数至少需要传入一个参数
绑定方法 特点:将调用者当做第一个参数自动传入,若还有其他参数该怎么传就怎么传,

def tell_info(student):
    print('my name is %s my age is %s my gander is %s'%(student["name"],student["age"],student["gander"]))

#等同于
def tell_info(self):
    print("my name is %s my age is %s my grender is %s"%(self.name,self.age,self.gender))

student = {
    
    
    "name":"egon",
    "age":18,
    "tell_info":tell_info


}

封装
隐藏属性
隐藏数据属性的目的就是让用户无法直接用,在数据前面加上_ _即可让用户无法直接调用,但可以间接使用,是为了严格控制内外部访问者对属性的操作
隐藏功能属性的目的是隔离复杂度,将多个函数封装成一个类,用户只需调用一个函数就行
_ _开头的属性特点:1、并没有真的藏起来,只是变形了,2、该变形只在类定义阶段,扫描语法时执行,此后__开头的属性都不会再变形,3、该隐藏对外不对内,即在类里面可以直接调用

详细内容可参考:https://www.cnblogs.com/linhaifeng/articles/6182264.html

猜你喜欢

转载自blog.csdn.net/givenchy_yzl/article/details/112370707
今日推荐