Python中abc
Posted xone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中abc相关的知识,希望对你有一定的参考价值。
import abc
指定metaclass属性将类设置为抽象类,抽象类本身只是用来约束子类的,不能被实例化
class Animal(metaclass=abc.ABCMeta): # 统一所有子类的方法
@abc.abstractmethod # 该装饰器限制子类必须定义有一个名为talk的方法
def say(self):
print(‘动物基本的发声...‘, end=‘‘)
class People(Animal): # 但凡继承Animal的子类都必须遵循Animal规定的标准
pass
class Dog(Animal):
pass
class Pig(Animal):
pass
obj1 = People()
obj2 = Dog()
obj3 = Pig()
obj1.say() # 动物基本的发声...卧槽
obj2.say() # 动物基本的发声...汪汪汪
obj3.say() # 动物基本的发声...吼吼吼
# 若子类中没有一个名为talk的方法则会抛出异常TypeError,无法实例化
# TypeError: Can‘t instantiate abstract class People with abstract methods say
class Animal(metaclass=abc.ABCMeta): # 统一所有子类的方法
@abc.abstractmethod
def say(self):
print(‘动物基本的发声...‘, end=‘‘)
class People(Animal):
def say(self):
super().say()
print(‘卧槽‘)
class Dog(Animal):
def say(self):
super().say()
print(‘汪汪汪‘)
class Pig(Animal):
def say(self):
super().say()
print(‘吼吼吼‘)
obj1 = People()
obj2 = Dog()
obj3 = Pig()
obj1.say() # 动物基本的发声...卧槽
obj2.say() # 动物基本的发声...汪汪汪
obj3.say() # 动物基本的发声...吼吼吼
补充说明
Python语言特性 - 鸭子类型
“当一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子”
以上是关于Python中abc的主要内容,如果未能解决你的问题,请参考以下文章