面向对象
封装
- 隐藏对象的属性和实现细节,通过私有属性和私有方法实现封装
继承
- 继承可以让子类具有父类的特性,提高代码的重用性
- 子类扩展父类——如果一个新类继承一个设计好的类,就直接具备了已有类的特征
- 已有类称为“父类或基类”,新的类,称为“子类或者派生类”
- 支持多重继承,一个子类可以继承多个父类
语法格式
class 子类类名(父类1[,父类2,...]):
类体
-
如果在类定义中没有指定父类,则默认父类是object类。(object类是所有类的父类,里面定义了一些所有类共有的默认实现)
- 关于构造函数
- 子类不重写__init__,实例化子类时,会自动调用父类定义的__init__
class Person: def __init__(self,name,age): print("创建Person") self.name = name self.age = age def say_age(self): print("{0}的年龄{1}".format(self.name,self.age)) class Student(Person): pass s1 = Student('lily',11) s1.say_age() print(dir(Student)) # 执行如果 创建Person lily的年龄11 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__
- 子类不重写__init__,实例化子类时,会自动调用父类定义的__init__