python中的abstractmethod decorator做什么?
from abc import abstractmethod
class Animal(object):
@abstractmethod
def walk(self):
''' data '''
pass
@abstractmethod
def talk(self):
''' data '''
pass
class Duck(Animal):
name = ''
def __init__(self, name):
print('duck created.')
self.name = name
def walk(self):
print('walks')
def talk(self):
print('quack')
obj = Duck('duck1')
obj.talk()
obj.walk()但是,如果我评论装饰师,代码仍然有效。
from abc import abstractmethod
class Animal(object):
def walk(self):
''' data '''
pass
def talk(self):
''' data '''
pass
class Duck(Animal):
name = ''
def __init__(self, name):
print('duck created.')
self.name = name
def walk(self):
print('walks')
def talk(self):
print('quack')
obj = Duck('duck1')
obj.talk()
obj.walk()我的问题是为什么要用这个装饰师?我甚至删除了Duck中的一些方法,比如talk。那它就不会坠毁。我不明白我们什么时候需要使用这个abstractmethod
发布于 2019-06-26 07:08:39
python中的抽象方法装饰器是做什么的?
那检查医生?呢
表示抽象方法的装饰器。 使用这个装饰符需要类的元类是ABCMeta或派生自它。具有从ABCMeta派生的元类的类不能实例化,除非它的所有抽象方法和属性都被重写。
请注意,在您的示例中,基类Animal类不使用ABCMeta,因为它是元类,因此装饰器基本上是无用的。
https://stackoverflow.com/questions/56766703
复制相似问题