编写一个类Foo,允许其实例返回使用__name__
创建的名称,
A = Foo(args)
str(A.__name__)
应该返回'A'
答案 0 :(得分:6)
这是不可能的(至少,不是在所有情况下,也不是没有肮脏的技巧)。在您的示例中,A
是对Foo
类型对象的引用。对象不知道如何存储对它的引用。如果你写:
A = Foo(args)
B = A
然后A
和B
都引用相同的对象,并且完全无法区分,因此您无法找到用于保存对象的第一个引用的对象。当然,您可以扫描globals()
以获取对象的引用,然后您会找到A
和B
。但是,如果您del A
,A
的所有痕迹都将消失。
你想做什么?如果您解释了用例,也许我们可以建议一个替代解决方案而不是您提出的解决方案。