- 封装:对象成员进行访问控制
- public(公开):公共的成员
- protected(受保护的):受保护的,只有父类和子类中可以访问 定义在变量前面加一个下划线 如:_name="zhangsan"
- private(私有的):只有当前类和对象中使用 定义在变量前面加2个下划线 如:__name = "zhangsan" ,若要访问可以使用 _className__name访问【不建议使用】
- 继承
class Person: # 构造函数 def __init__(self): print("父类构造函数") name = None age = None def say(self): print("say.....") def work(self): pass class Student(Person): # 构造函数,每次实例化先调用,构造函数名称必须为__init__, 自动调用,必须有一个参数 # 若子类没有构造函数,会往父类寻找构造函数 def __init__(self): # 调用父类构造函数 super(Student, self).__init__() print("构造函数..") def work(self): super().work() print("study....") s=Student() s.name="zhangsan" print(s.name) s.work()
- 继承可以使用父类的非私有成员和方法
-
所有类继承object
-
当子类中的成员和父类中的成员相同,优先使用子类中的成员
-
子类中若想访问父类中的成员,可以使用父类.父类成员或者 super().父类成员
-
super:不是关键字,而是一个类,可以获取父类
-
单继承
-
多继承:MRO用于保存同一个类继承顺序,调用方法:__MRO__
- 多态
- 同一个对象在不同情况下的不同状态
- 多态性:一种调用,不同的执行效果
- 多态:同一个事务的多种形态
- Mixin设计模式:
- 主要采用多继承的方式对类进行扩展
- 常用函数
- issubclass:判断是否为子类,如:issubclass(b,a)
- isinstance:判断是否为类的实例如:isinstance(a,A)
- hasattr:判断是否有成员 如:hasattr(a,"name")
- setattr:设置成员
- getattr:得到成员
- dir:获取对象成员列表,如 dir(A)