Python-class
2020/10/25更新 整合了内容
Python面向对象编程
ps:相对熟悉的知识就不仔细列出了
定义与实例
- class定义一个对象
- 类的实例是以函数的形式调用类对象来创建的,__init__()为构造函数,__del__()为析构函数
作用域规则
- Python类中没有作用域,这与C++,Java不同。而需要显示使用self的原因在于Python没有提供显示声明变量的方式(如:int x;),因此无法知道在方法中要赋值的变量是不是局部变量,或者是否要保存为实例属性,而显示self可以解决这一问题。
继承
- super(cls, instance)会返回一个特殊对象,该对象支持在基类上执行属性查找。你可以通过super获取基类,调用基类的函数。在Python3中,super中的参数可以不要。
- 多继承不要使用不要使用不要使用
多态动态绑定和鸭子类型
- 动态绑定(在继承背景下使用,也成多态),obj.attr,首先搜索实例本身,然后是实例的类定义,然后是基类,查找会返回第一个匹配项
- 动态绑定在于其不受对象obj的类型影响,因此如果执行像obj.name这样的查找,对于所有拥有name属性的obj都适用。这种行为有时候被称作“鸭子类型”(duck typing),这个名称来源于一个谚语:“如果看起来,叫声像而且走起路来像鸭子,那么它就是鸭子”。