小注释: id() 函数可以输出变量的内存地址(十进制输出);
直接打印对象变量,可以输出内存地址(十六进制)
1、对象增加属性
对象 . 属性名 ,就可以给对象增加属性(虽简单,但不推荐)
并不修改类的属性,只是简单暴力的在类的外部对对象进行了改变;
2、初始化方法
当使用 类名()创建对象时,会自动执行以下操作:
1.为对象在内存中分配空间——创建对象;
2.为对象的属性设置初始值——初始化方法(__ init __ )
这个初始化方法就是__ init __方法,是对象内置的方法。
3、初始化方法改造
在开发时,如果希望在创建对象时确定属性值,可以对__ init __进行改造
class Cat:
def __init__(self,name_self):
self.name = name_self
def eat(self):
print("%s balabala" % self.name)
4、内置方法和属性
序号 | 方法名 | 类型 | 作用 |
---|---|---|---|
01 | __ del __ | 方法 | 对象被从内存中删除前,会被自动调用 |
02 | __ str __ | 方法 | 返回对象的描述信息,print函数输出使用 |
对象的生命周期,对象是全局变量,只有程序结束时才会执行;
考虑在对象销毁前,再做一点事情,可以考虑调用__def__ 函数
str 必须返回字符串
5.私有属性私有方法
在属性和方法前加两道下划线即可;
私有属性和私有方法在外部不能被访问
伪私有
下划线+类名+下划线(两道)+方法,就可以实现外部访问
6.继承
class 类名(父类名):
即可实现继承
继承的方法重写
重写(override)在子类中重新编写父类中的同名方法
super.()也可以重写父类方法
父类私有属性和私有方法
子类不可以访问父类的私有属性和方法
7.多继承
class C(父类A,父类B):实现多继承
如果父类A、B中方法相同,应避免使用多继承,
python中的MRO ——方法搜索顺序
C._ _ mro _ _ 调用内置方法,print输出之后就可以看到调用顺序