类型错误:"记录器"对象在尝试使用已创建的记录器对象时不可调用



我有一些继承类的用例。在基类中,我创建了记录器对象

import logging
class abc():
logging.basicConfig(filename=r"D:logger.txt",format="%(asctime)s %(message)s",filemode="w")
abcd=logging.getLogger()
abcd.setLevel(logging.INFO)

在派生类中,我尝试使用相同的对象

from test import abc
import logging
class pqr(abc):
p=logging.getLogger('abcd')
p.setLevel(logging.INFO)
def you(self):
self.p("Ad")
obj=pqr()
obj.you()

但我得到这个:

Traceback (most recent call last):
File "d:Testtest2.py", line 9, in <module>
obj.you()
File "d:Testtest2.py", line 7, in you
self.p("Ad")
TypeError: 'Logger' object is not callable

我不确定您要使用此代码完成什么。 您提供了三个部分,但包含了一些断开连接的组件。 让我们回顾一下:

class abc():
logging.basicConfig(filename=r"D:logger.txt",
format="%(asctime)s %(message)s",
filemode="w")
abcd=logging.getLogger()
abcd.setLevel(logging.INFO)

您已经设置了一个类abc,初始化了logging1 配置,并创建了一个类属性abcd...您在以后的代码中没有引用,所以我不确定为什么它会在您的帖子中。

class pqr(abc):
p=logging.getLogger('abcd')
p.setLevel(logging.INFO)

您从以前的类派生了一个类pqr。 然后,实例化标记为"abcd"的新记录器,使其成为类属性,并设置其报告级别。 *请注意,这是一个新的记录器,而不是您在abc中创建的记录器。

到目前为止,我们很好。 然而。。。

# In pqr:
def you(self):
self.p("Ad")
# Main
obj=pqr()
obj.you()

obj.p(方法you中的self.p(是pqr类记录器。 您尝试将记录器对象作为一个整体调用。 它不是一个方法或函数;它是一个完整的记录器对象。 如果您希望记录某些内容,则必须调用适当的方法,例如self.p.info(<your message>)

最新更新