Python TypeError:调用元类base对象()时出错,不带任何参数
我试图使用python的Python TypeError:调用元类base对象()时出错,不带任何参数,python,abstract-class,metaclass,Python,Abstract Class,Metaclass,我试图使用python的abc模块实现抽象类,如下所示 import abc class AbstractBaseClass(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod def first_method(self): pass class LearnAbstractBaseClass(object): __metaclass__ = AbstractBaseClass
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
不工作
class LearnAbstractBaseClass(object):
__metaclass__ = AbstractBaseClass
def first_method(self):
passs
那么这个错误到底意味着什么呢?基类不是元类。您不能使用任何常规的旧类作为元类并期望它工作
AbstractBaseClass
不是为元类而设计的,所以当你将它作为一个元类使用时,显然会出现错误。@Aran Fey Ok我不确定abc模块的实际功能,虽然abc在幕后将其转换为纯元类,Ok cool会读到一些关于abc的内容。abc
模块使用元类来发挥其魔力,但这并不意味着它会把你的类变成一个功能正常的元类。
class LearnAbstractBaseClass(object):
__metaclass__ = AbstractBaseClass
def first_method(self):
passs