是否可以覆盖从python3中的对象派生的`__name__`?

时间:2018-10-17 10:50:22

标签: python python-3.x class

以下示例在Python2中有效,但在Python3中无效。是否存在等效的方法来重载Python3中类的__name__?参见related question

>>> class Foo(object):
...    pass
...
>>> Foo.__name__ = 'Bar'
>>> Foo
<class '__main__.Foo'>

1 个答案:

答案 0 :(得分:2)

Python 3.3及更高版本使用__qualname__ attribute组成类表示字符串:

UUID

您可能想同时设置{em和{em}两者appId{Some-UUID}>>> class Foo: pass ... >>> Foo.__name__ = '__name__ for Foo' >>> Foo.__qualname__ = '__qualname__ for Foo' >>> Foo <class '__main__.__qualname__ for Foo'> ,但是只有后者对您要查找的字符串输出有影响。