单继承
“龙生龙,凤生凤,老鼠的儿子会打洞”,这句话将动物界中的继承关系表现的淋漓尽致。在Python中,类与类之间也具有继承关系,其中被继承的类称为父类或基类,继承的类称为子类或派生类。子类在继承父类时,会自动拥有父类中的方法和属性。
单继承指的是子类只继承一个父类,其语法格式如下:
class 子类(父类):
定义一个表示两栖动物的父类Amphibian和一个表示青蛙的子类Frog,示例代码如下:
class Amphibian:
name = "两栖动物"
def features(self):
print("幼年用鳃呼吸")
print("成年用肺兼皮肤呼吸")
class Frog(Amphibian): # Frog类继承自Amphibian类
def attr(self):
print(f"青蛙是{self.name}")
print("我会呱呱叫")
上述代码定义的Amphibian类中包含类属性name与实例方法features(),Frog类继承Amphibian类并定义了自己的方法attr()。
创建Frog类的对象frog,使用frog对象分别调用Amphibian类与Frog类中的方法,示例代码如下:
frog = Frog() # 创建类的实例化对象
print(frog.name) # 访问父类的属性
frog.features() # 使用父类的方法
frog.attr() # 使用自身的方法
运行程序,结果如下所示:
两栖动物
幼年用鳃呼吸。
成年用肺兼皮肤呼吸。
青蛙是两栖动物。
我会呱呱叫。
从输出结果中可以看出,子类继承父类之后,就拥有从父类继承的属性和方法,它既可以调用自己的方法,又可以调用从父类继承的方法。
多学一招:isinstance()函数与issubclass()函数
Python提供了两个和继承相关的函数,分别是isinstance()函数和issubclass()函数。
isinstance(o,t)函数用于检查对象的类型,它有2个参数,第1个参数是要判断类型的对象(o),第二个参数是类型(t),如果o是t类型的对象,则函数返回True,否则返回False。例如:
>>> isinstance(frog, Frog)
True
函数issubclass(cls, classinfo)用于检查类的继承关系,它也有2个参数,第一个参数是要判断的子类类型(cls),第二个参数是要判断的父类类型(classinfo),如果cls类型是classinfo类型的子类,则函数返回True,否则返回False。例如:
>>> issubclass(Frog, AmphAnimal)
True