1、面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
2、在类的内部定义访问数据的函数,就把数据封装了起来,这些和类的数据相关联的函数,叫做类的方法。
3、__开头的变量是私有变量,只有内部可以访问,若希望外部代码修改,可以在内部增加方法。
4、继承后,子类拥有了父类所有的功能(方法),继承的另一个好处是多态:对扩展开放——可以对父类添加子类,对修改封闭——不需要修改依赖父类的函数(开闭原则)
5、
对于静态语言(例如Java)来说,如果需要传入
Animal
类型,则传入的对象必须是Animal
类型或者它的子类,否则,将无法调用run()
方法。对于Python这样的动态语言来说,则不一定需要传入
Animal
类型。我们只需要保证传入的对象有一个run()
方法就可以了动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的。
6、数据封装、继承和多态是面向对象程序设计中最基础的3个概念。
7、使用__slots__
要注意,__slots__
定义的属性仅对当前类实例起作用,对继承的子类是不起作用的。