TypeError:调用元类base时出错object()不带参数

时间:2018-04-24 08:49:55

标签: 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

    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

那么错误究竟意味着什么?

0 个答案:

没有答案