2019-11-26-Python面向对象进阶

1126-Python面向对象进阶

  1. 访问权限一般分为:

    a.公开的:类的里外都可以使用,也可以被继承

    b.保护的:类的里面可以使用,也可以被继承

    c.私有的:类的里面可以使用,外部不能使用也不能被继承

  2. Python中类的内容访问权限:严格来讲,Python中只有公开的,私有化为假的私有化

    私有化:__ 方法名/属性名,Python只是改名,在私有化属性前添加了 _类名

  3. 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. 在外面给属性赋值的时候不带下划线

  4. 继承:让子类直接拥有父类的属性和方法

    1)语法:class 类名(父类1,父类2....):

    2)子类中添加属性和方法,如果与父类同名,子类新命名的属性和方法会重写

    3)子类中添加新对象属性,如果继承父类对象属性,在init中使用super().__ init__()方法

    4)super应用:在子类中通过super()调用父类的对象方法和类方法

    ​ super(类1,类1的对象).方法():调用类1父类的方法

    ​ super(type,obj):obj必须是type的对象或者是子类的对象

    5)对象属性只能继承第一个父类的

    6)多继承,顺序:类.__ mro__;或者画出树状图,顺序是从左往右

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容