一、对象
对象=属性+方法
属性是静态的,方法是动态的(函数)
二、面向对象
oo:object oriented 面向对象
特征:
1、封装:信息隐蔽技术(只是调用,不知道内部实现机制)
2、继承:子类自动共享父类之间数据和方法的机制
3、多态:不同对象对同一方法响应不用的操作。各种动物(对象)对于跑(方法)这个动作会有不同的反应(多塔)
OOA:面向对象分析
OOP:面向对象编程
OOD:面向对象设计
三、类和对象
类进行实例化构成对象
工厂的模具(类)正式生产成成品(对象)
图纸(类)投入生产成房子(对象)
同一个类生成无数个对象,对象很相似,都是来源于同一个类的属性和方法。
四、self
self:相当于C++里的this指针
当一个对象的方法被调用时,对象会将自身作为第一个参数传递给self,这时python就知道是哪个对象调用方法了。
五、魔法方法
python天生拥有一些神奇的方法,可以给你的类增加魔力的方法。如果你的对象实现了这些方法中的某一个,那么这个方法就会在特殊的情况下被python调用,而这一切都是自动发生的。
1、方法会被双下划线包围
2、最简单的魔法方法:__init__(self):构造方法
只要实例化一个对象的时候,那么这个方法就会在对象被创建的额时候会自动被调用
3、实例化对象的时候是可以传入参数的,会自动传入__init__方法中。可以重写这个方法来自定义对象的初始化操作。
__init__(self,param1,param2)
六、公有&私有
定义私有变量:变量前加双下划线
名字改编/重整name mangling,可被外部间接访问
访问方法:1、定义一个方法,从内部拿到私有的变量;
2、双下划线其实是_类名_变量名,所以可使用 对象._类名_变量名 来访问
七、继承
class DerivedClassName(BaseClassName):
括号前:子类,子类可以继承父类的所有属性和方法
括号里:基类、父类或超类
注意:如果子类中定义于父类同名的方法或属性,则会自动覆盖父类对应的方法或属性
解决方案:1、调用未绑定的父类方法
2、使用super方法:super.需要的父类的函数()
多重继承:
class DerivedClassName(Base1,Base2,Base2):
避免使用,会出现不可预见的bug