我已经阅读了关于抽象基类的 python 文档:
从这里:
abc.abstractmethod(function)
指示抽象方法的装饰器。使用这个装饰器需要类的元类是
ABCMeta
或派生自它。ABCMeta
除非重写其所有抽象方法和属性,否则无法实例化具有派生元类的类。
在这里
您可以将
@abstractmethod
装饰器应用于必须实现的方法,例如draw();然后,Python 将为未定义该方法的类引发异常。请注意,仅当您实际尝试创建缺少该方法的子类的实例时才会引发异常。
我已经使用此代码进行了测试:
import abc
class AbstractClass(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def abstractMethod(self):
return
class ConcreteClass(AbstractClass):
def __init__(self):
self.me = "me"
c = ConcreteClass()
c.abstractMethod()
代码很好,所以我不明白。如果我输入c.abstractMethod
,我会得到:
<bound method ConcreteClass.abstractMethod of <__main__.ConcreteClass object at 0x7f694da1c3d0>>
我在这里缺少什么?ConcreteClass
必须实现抽象方法,但我也不例外。