抽象类专门用于继承
ABC
来专门定义抽象类from abc import ABC,abstractclassmethodclass Animal(ABC):@abstractclassmethoddef say_name():pass
abstractclassmethod
进行修饰如果类中有抽象方法,那么这个类是不能实例化的
animal = Animal()
TypeError: Can’t instantiate abstract class Animal with abstract methods say_name
class Dog(Animal):# 普通方法def work():print("i am work")dog = Dog()
class Dog(Animal):# 普通方法def work():print("i am work")dog = Dog()
报错
TypeError: Can't instantiate abstract class Dog with abstract methods say_name
实现后则不会报错
class Dog(Animal):# 普通方法def work():print("i am work")def say_name():print("i am WangCai")dog = Dog()
当然我们还可以用类方法实现
class Dog(Animal):# 普通方法def work():print("i am work")@classmethoddef say_name():print("i am WangCai")dog = Dog()
只要实现了这个方法,那么就是可以的
除了抽象方法外,我们还可以有抽象属性,抽象属性也必须重写
from abc import ABC,abstractpropertyclass Animal(ABC):@abstractpropertydef ear():return "animal ear"
子类
class Dog(Animal):@propertydef ear():return "dog ear"dog = Dog()
上一篇:Java栈和队列·下