我有一些继承类的用例。在基类中,我创建了记录器对象
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
,初始化了logging
1 配置,并创建了一个类属性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>)
。