我有一个抽象类定义
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()
我很困惑,因为记录器不是一个抽象方法,但错误消息说它是。 logger
,MyClass
中使用了HelperClass
,并且模块(调用HelperClass)不确定导致问题的类中是否具有相同的名称logger
。
如果我从logger
删除MyClass
,则问题会解决,但是,我确实需要保留记录器。