昨日内容回顾
定义类 class Dog :
静态属性:表面拥有的特点 4
动态属性:bite eat run 拥有self 参数
实例属性: 实例方法中定义的属性
实例化: 类名()---->对象 ,过程
实例:类名() 对象/实例
self: 调用方法或者属性本身 的那个对象
__init__ 构造方法 : 创建对象的时候自动去调用的方法
类名:
查看静态属性,改变静态属性(常用)
查看动态属性,得到的是内存地址
调用动态属性,传self 参数,但是一般不用
对象:
查看静态属性(但是不常用)
查看动态属性,得到的是内存地址
调用动态属性,不需要传self 参数
类中的命名空间
类命名空间
实例命名空间
实例化发生了什么?
开辟了一个新的实例命名空间
把实例的内存地址传给了self
self空间中可以定义实例属性
把属性返回给实例,然后就能用这些属性了
组合: peo.wap=打狗棒
一个类对象作为另一个类对象的属性
# 继承
单继承 继承一个父类
多继承 继承两个以上父类
继承顺序 按继承父类的先后顺序,各父类用
, (逗号)隔开
子类重写父类的__init__方法
父类.__init__(self,父类中的属性)
super().__init__(父类中的属性)
父类中方法直接可以在子类中重写
调用是先在子类自己所在的类中找,没有再去父类中找
想要调用父类中方法用super super().eat()
所有的类都继承自object类
【super作用】
如果子类(Apple)继承父类(Fruit)不做初始化,那么会自动继承父类(Person)属性name。
如果子类((Apple)继承父类(Fruit)做了初始化,且不调用super初始化父类构造函数,那么子类(Apple)不会自动继承父类的属性(name)。
如果子类(Apple)继承父类(Fruit)做了初始化,且调用了super初始化了父类的构造函数,那么子类(Apple))也会继承父类的(name)属性。
MRO顺序