【发布时间】:2019-04-16 17:02:38
【问题描述】:
Python 3.7:
我有一个类定义,其中类属性根据类名分配一个值,该值用于类内的装饰器中。
我正在寻找“当前正在定义的类”的代词。
这是一个例子:
class MyClass:
# NameError: name '__class__' is not defined
class_logger = find_logger(__class__.__name__)
# __init__ is not important
def __init__(self):
# This works!
self.logger = find_logger(__class__.__name__)
@mydecorator(class_logger)
# mymethod is not important
def mymethod(self):
return 1
“当前正在定义的类”的合适代词是什么?
(这类似于How to get the current Python class name in __init__ regardless of the class of "self"?,但那里的问题是“在 init 的定义中”,当时是针对 2.7。Python 3.x 解决了这个问题。)
【问题讨论】:
-
有趣的问题。我认为不一定保证类对象存在于某种部分初始化的状态,而类块尚未完全执行。所以可能没有任何等价的
__class__。不过,获取名称并且仅获取名称可能更有可能...... -
执行类块时类不存在。没有可引用的类对象
标签: python class python-3.7