我有一些用例,其中类是继承的。在基类中,我创建了记录器对象
Private Sub Command240_Click()
If IsNull(Me.Text224) Then
MsgBox "Before I can Command240, you must enter a Text224.", vbExclamation
ElseIf Not IsDate(Me.Text224) Then
MsgBox "The Text224 you entered is invalid.", vbExclamation
Else
MsgBox "You have entered a valid Text224, but for some reason I can't Command240."
End If
End Sub
在派生类中,我尝试使用同一对象
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()
答案 0 :(得分:0)
我不确定您要使用此代码完成什么。您提供了三部分,但其中包括一些断开连接的组件。让我们来回顾一下:
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(方法self.p
中的you
)是pqr
类记录器。您试图将整个记录器对象调用。它不是方法或函数。它是整个记录器对象。如果您希望记录某些内容,则必须调用适当的方法,例如self.p.info(<your message>)
。