【发布时间】:2021-11-06 14:17:58
【问题描述】:
我在单独的文件中有两个类,a.py 和 b.py。
# a.py
import logging
LOG = logging.getLogger(__name__)
class A:
def name(self):
# Do something
LOG.debug("Did something") # LOG reads __name__ and print it.
我无法以任何方式修改 a.py。
# b.py
import a
class B(A):
pass
日志输出为:
DEBUG:<TIME> called in a, Did something
我想更改__name__,以便子类的调用应该记录called in b。
我的项目将其模块名称记录为输出的一部分。但是,当我继承一个类并调用父类方法时,我不知道它是从A 或B 调用的,因为它只显示父类的模块名称。我怎样才能改变它?或者,有什么其他方法可以避免这种情况?
【问题讨论】:
-
当然你应该指的是
self.__name__而不是__name__? -
@smci。不,OP 想要模块命名空间
-
@MadPhysicist 谢谢。 @smci 我想在不更改读取模块的
__name__的日志记录的情况下解决。 -
似乎试图改变作为python模块导入系统一部分的
__name__是获得这样的功能的不好方法。为什么不直接在实例或类上使用属性? -
@马克。我同意。但是您可以谨慎地更改其他内容。我的回答提出了一个不直接违反最小惊喜的替代方案。
标签: python class oop global-variables python-module