OOP(Object Oriented Programming)
万物皆对象
是一种对现实世界理解和抽象的方法
封装、继承、多态
对象:对象是存在的具体实例,具有明确的而状态(属性)和行为(方法)
继承:
注意:
- super().__init__()调用父类的初始化方法
- 构造方法不可继承
- 父类私有属性在子类中不能直接访问
- 继承关系是一种is-a的关系,比如战士是英雄。
- 支持多继承。(建议慎用)
覆盖方法:子类修改定义在父类中的实现方法,子类中的方法必须使用与父类方法相同的方法头。
注意:
- 方法覆盖发生在通过继承而相关的不同类中
- 方法覆盖必须具有同样的方法签名
- __开头定义的私有方法不能被覆盖:如果子类中的方法在父类中是私有的,那么这两个方法是不相干的,即使这两个方法由相同的方法名。
object类:
1、Python中的所有类都继承自object类
2、如果定义类时没有显示地指明父类,父类默认为object
3、object中定义的所有方法都有两条前导下划线和后置下划线。
1、一个类在初始化时首先会调用__new__()方法。(不是__init__()方法)
2、__new__()必须有返回值,这个返回值就是实例化出来的当前类的对象
3、如果__new__()方法最后没有正确的返回当前类的对象,那么后面的init()方法不会调
用
单例模式:单例模式也叫做单子模式,单例对象的类必须保证只有一个实例存在。通过覆盖__new__()函数来实现单例。
cls:类
*args:命名关键字参数(结果会存在元组中)
**kwargs:关键字参数(结果会存在字典中)
setatter(cls,attr,value):给cls类设置attr属性,attr属性值为value(如果没有这个属性的话,相当于给这个类新增了一个属性)
遍历字典的方法为:for key,value in dirs.items():
多态和动态绑定
多态:同一个实体,同时具有多种形式(父类和其子类)
动态绑定:一个方法可以被沿着继承链的几个类执行,运行时有python决定调用哪个
方法
core.core_move()方法根据我们实际传入的参数来进行对应方法的调用,传英雄时调用英雄的移动方法,传战士时调用战士的移动方法,这就是动态绑定。
程序的MVC模式
Model: 数据模型
View: 视图层(显示逻辑)
Controller: 控制层(业务逻辑)
遇到问题,可加老九君个人QQ:614940318,请备注来自CSDN
老九学堂免费C、C++、Java课程地址: https://study.163.com/courses-search?keyword=老九学堂