一、基类与派生类
在定义类时,可以在类名后面添加一对小括号“()”,用于指定新定义的类继承自哪些类。例如:
class 类名(基类1,基类2,基类3...): pass
被继承的类和新定义的类通常分别被称为“基类”和“派生类”。当然,基类和派生类的称呼是相对的:基类可能也是从其它的类继承而来,是其它类的派生类;同样,派生类也可以被其它的类继承,而成为基类。
基类和派生类很多时候又分别被称作“父类”和“子类”。
定义类时,可以从单个基类继承(单继承),也可以从多个基类继承(多继承)。多继承时,各基类之间用逗号“,”分隔。
二、派生类的成员
1、通过“复制”,派生类得到所有基类的公有成员和保护成员。
在生成派生类时,所有基类的公有成员和保护成员都会“复制”一份给派生类,所以,派生类拥有所有基数的公有成员和保护成员,通过派生类的类名和派生类对象的对象名,可以访问所有基数的公有成员和保护成员。
因为基类的私有成员在生成派生类时没有被“复制”,所以,通过派生类的类名和派生类对象的对象名不能访问基数的私有成员。例如:
class base01:
x1 = 1; _y1 = 2; __z1 = 3
def __init__(self): self.a1 = 11; self._b1 = 12; self.__c1 = 13
class base02:
x2 = 5
class sub01(base01, base02):
v = 100
# 用类名访问
print(sub01.x1, sub01._y1, sub01.x2, sub01.v) # 基类公有成员和保护成员可以访问:1 2 5 100