- 1 封装:提高程序的安全性。
将数据 (属性) 和行为 (方法) 包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
在Python中没有专门的修饰符用于属性的私有,如果该属性不希望在类访问,前边使用两个‘____’。 - 2 继承:提高代码的复用性。
语法格式:class 子类类名(父类1,父类2,...):
如果一个类没有继承任何类,则默认继承object;
Python支持多继承;
定义子类时,必须在其构造函数中调用父类的构造函数。
方法重写:
如果子类对继承自父类的某个属性或方法不满意,可以在子类中对其(方法体)进行重新编写;
子类重写后的方法中可以通过super().xxx0调用父类中被重写的方法
plaintext # 方法重写 def info(self): super().info() # 调用父类被重写的方法 print('\t学号:{}'.format(self.stuNo))
- 3 多态:提高程序的可扩展性和可维护性。简单地说,即便不知道对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象的方法。
- 4 特殊方法和特殊属性
print(c.__dict__) # 实例对象的属性字典 print(C.__dict__) print('-'.center(20, '*')) print(c.__class__) # <class '__main__.C'>输出了对象所属的类 print(C.__bases__) # C类的父类类型的元素 print(C.__base__) # 类的基类 print(C.__mro__) # C的层次结构 print(A.__subclasses__()) # 子类列表 class Student: def __init__(self, name): self.name = name def __add__(self, other): return self.name+'\t'+other.name stu1 = Student('Jack') stu2 = Student('Tom') print(stu1 + stu2) # 实现了两个对象的加法(在Student类中 重新编写__add__()特殊的方法) print(stu1.__add__(stu2)) ```