- 1.抽象
- 数据抽象 -->表示世界中一类事物的特征,就是对象的属性.比如鸟有翅膀,羽毛等(类的属性)
- 过程抽象 -->表示世界中一类事物的行为,就是对象的行为.比如鸟会飞,会叫(类的方法)
- 2.封装
- 面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都封装在类中
- 分别称为类的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。
- 1.私有化属性
- Python中,以两个下划线‘__’开头的属性都是私有属性
- 私有属性只能在类的内部访问,外界不能通过类名(对象).__属性访问
- 外界修改类中私有属性值
- class 类名:
- def set_name(self,name):
- self.__name=name
- 对象.set_name("张三")
- class 类名:
- 外界访问私有属性值
- class 类名:
- def get_name(self):
- return self.__name
- def get_name(self):
- print(对象.get_name())
- class 类名:
- 2.私有化方法
- Python中,以两个下划线‘__’开头的属性都是私有方法
- 私有方法只能在类的内部访问,外界不能通过类名(对象).__属性访问
- 3.继承
- 在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物;
- 同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承狗
- 子类在继承的时候,在定义类时,小括号()中为父类的名字,能做到代码复用
- 父类的属性、方法,会被继承给子类
- 注意:私有属性(私有类属性)和私有方法不被继承。
- class 子类(父类):
- 类体
- 继承多个父类 class 子类(父类1,父类2.。。)
- 多层继承 class A: class B(A) class C(B)
- 1.方法重写
- 如果子类和父类有相同的属性名和方法名,当调用的时候用的是子类的方法名和属性名
- 当子类想使用父类的同名方法和同名类属性时 (不适用于对象属性)
- 1. 父类.方法名(self,参数) 父类.属性
- 2. super().方法名(参数) 不需要self super().属性
- 3. super(子类,self).方法名(参数) super(子类,self).属性
- 2.多继承同名方法调用顺序
- class A class B(A) class C(A) class D(B,C)
- python3 新式类 搜索方法顺序 D-B-C-A 广度优先
- python2 旧式类(经典类) 搜索方法顺序 D-B-A-C 深度优先
- 4.多态
- 所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。
- 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。
- 5.特殊方法
- 类名.__mro__ 搜索方法的顺序 (python3新式类)
- import inspect inspect.getmro(类) 搜索方法的顺序 (python2经典类)
- 类名.__bases__ 所有父类
- 类名.__base__ 第一个父类
- 对象.__class__ 对象是由哪个类创建出来的
- isinstance(对象,类) 判断对象是否由这个类创建出来的
- 6.新式类和经典类(旧式类)的区别
- type(实例对象) 类.__class__ MRO基类搜索顺序算法
- 新式类 <class '__mian__.类'> <class '__mian__.类'> C3 广度优先
- 经典类 <type 'instance'> __mian__.类 深度优先
- 新式类 相同父类只执行一次构造函数,经典类重复执行
python 面向对象—4大特征
最新推荐文章于 2024-11-30 16:10:41 发布