我正在尝试使用python的abc
模块实现抽象类,如下所示
import abc
class AbstractBaseClass(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def first_method(self):
pass
class LearnAbstractBaseClass(object):
__metaclass__ = AbstractBaseClass
def first_method(self):
print "Hello"
obj = LearnAbstractBaseClass()
上述代码有什么问题,为什么我收到以下错误
>>> python AbstractBaseClasses.py
C:\Python27\lib\abc.pyc
Traceback (most recent call last):
File "AbstractBaseClasses.py", line 41, in <module>
class LearnAbstractBaseClass(object):
TypeError: Error when calling the metaclass bases
object() takes no parameters
注意:在上面的代码中,我使用__metaclass__
LearnAbstractBaseClass
属性将父类AbstractBaseClass
用作元类,但是当我继承了来自父类LearnAbstractBaseClass
的子类AbstractBaseClass
,它可以正常工作
正常工作
class LearnAbstractBaseClass(AbstractBaseClass):
def first_method(self):
passs
无效
class LearnAbstractBaseClass(object):
__metaclass__ = AbstractBaseClass
def first_method(self):
passs
那么错误究竟意味着什么?