类型错误实例化类扩展抽象类

时间:2016-09-26 18:53:50

标签: python typeerror abstract

我有一个抽象类定义

class AbstractClass(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def method_a(self):
        pass

    def method_b(self):
        pass

我有一个从抽象派中延伸的课程

class MyClass(AbstractClass):

    logger = get_my_logger() # util function return logger from logger pool

    def method_a(self):
        # do something
        return None

我有一个帮助类在classmethod

中实例化MyClass
class HelperClass(object):
    logger = # get logger

    @classmethod
    def init_my_class(cls):
        my_class = MyClass()

当我在模块中致电HelperClass.init_my_class时,我收到TypeError消息TypeError: Can't instantiate abstract class MyClass with abstract methods logger

#module.py
logger = # get logger

def init():
    HelperClass.init_my_class()

我很困惑,因为记录器不是一个抽象方法,但错误消息说它是。 loggerMyClass中使用了HelperClass,并且模块(调用HelperClass)不确定导致问题的类中是否具有相同的名称logger

如果我从logger删除MyClass,则问题会解决,但是,我确实需要保留记录器。

0 个答案:

没有答案