1126-Python面向对象进阶
-
访问权限一般分为:
a.公开的:类的里外都可以使用,也可以被继承
b.保护的:类的里面可以使用,也可以被继承
c.私有的:类的里面可以使用,外部不能使用也不能被继承
-
Python中类的内容访问权限:严格来讲,Python中只有公开的,私有化为假的私有化
私有化:__ 方法名/属性名,Python只是改名,在私有化属性前添加了 _类名
-
getter和setter:需要的属性默认执行的函数
1)使用场景:
a.希望在对象属性赋值前给属性执行判断等操作,就在属性前添加setter
b.希望在获取属性值前给属性执行判断等其他操作,就在属性添加getter
c.使用属性时,默认执行setter或getter函数功能
2)getter使用:
a. getter:将需要执行getter的属性名前添加_属性名
b. 声明函数:
@property
def 属性名(self):
其他操作
return 新的属性值
c. 在外面给属性赋值的时候不带下划线,调用时默认执行
3)setter使用:给属性添加setter前必须添加getter
a. 声明函数:函数不需要返回值,单需要一个参数,这个参数就是给属性赋的值
@property
def 属性名(self): -- (getter部分)
其他操作
return 新的属性值
@属性名.setter
def 属性名(self, value):
其他操作,value为新的属性值
b. 在外面给属性赋值的时候不带下划线
-
继承:让子类直接拥有父类的属性和方法
1)语法:class 类名(父类1,父类2....):
2)子类中添加属性和方法,如果与父类同名,子类新命名的属性和方法会重写
3)子类中添加新对象属性,如果继承父类对象属性,在init中使用super().__ init__()方法
4)super应用:在子类中通过super()调用父类的对象方法和类方法
super(类1,类1的对象).方法():调用类1父类的方法
super(type,obj):obj必须是type的对象或者是子类的对象
5)对象属性只能继承第一个父类的
6)多继承,顺序:类.__ mro__;或者画出树状图,顺序是从左往右