property装饰器
我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用这样可以防止属性被修改
如下图,使用name()方法获得name属性
通过使用@property,将name()方法转换为相同名称的name只读属性
继承
继承的简介
继承是面向对象的三大特性之一
继承的引入
ocp原则:开放拓展,关闭修改
使用issubclass检测一个类是否是另一个类的父类任何类最大的父类都是object
所有的类都继承object
如果在⼦类中有和⽗类同名的⽅法,则通过⼦类实例去调⽤⽅法时,会调⽤ ⼦类的⽅法⽽不是⽗类的⽅法,这个特点我们称之为⽅法的重写(覆盖)
当我们调⽤⼀个对象的⽅法时: 会优先去当前对象中寻找是否具有该⽅法,如果有则直接调⽤
如果没有,则去当前对象的⽗类中寻找,如果⽗类中有则直接调⽤⽗类中 的⽅法
如果没有,则去⽗类中的⽗类寻找,以此类推,直到找到object,如果依 然没有找到就报错了
super()
super()可以获得当前类的父类
并且通过super返回对象调用父类方法时,不需要传递self
多重继承
在python中是支持多重继承的,我们可以唯一各类同时指定多个父类
可以在类名的()后边添加多个类,来实现多重继承
多重继承,会使⼦类同时拥有多个⽗类,并且会获取到所有⽗类中的⽅法
在开发中没有特殊情况,应该尽量避免使⽤多重继承。
因为多重继承会让我们的代码更加复杂
如果多个⽗类中有同名的⽅法,则会先在第⼀个⽗类中寻找,然后找第⼆ 个,找第三个…前⾯会覆盖后⾯的
通过_base_查看一个类继承了多少个类
多态
多态只是代码的运用形式
从字⾯理解就是多种形态
如下图,fly的函数对象有不止一种表现形式
属性和方法
类属性:
直接定义在类中的属性
类属性可以通过类和该类的实列来访问
只能通过类对象来修改,,无法通过实列对象来修改
⾯向对象三⼤特性
封装 确保对象中数据的安全
继承 保证了对象的扩展性
多态 保证了程序的灵活性