How to get the variable name that instance the class?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Getting an instance name inside class __init__()
我正在努力解决这个小问题:
1 2 3 4 5 6 | class Test(object): def __init__(self): print"hello: %s" % i_dont_know b = Test() c = Test() |
我希望得到的结果是:
1 2 | hello: b hello: c |
只是变量名。
我知道id(self)返回引用代码,可以得到引用名称吗?
最好做些像
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Test: def __init__(name): self.name = name def __str__(): return name a = Test("a") print a >>> a |
不,你不能。除了布伦巴恩的例子,还有另一个不可能的原因。构造函数在赋值发生之前完全执行。
看看字节码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | >>> class Test(object): pass ... >>> def make_instances(): ... a = Test() ... b = Test() ... >>> import dis >>> dis.dis(make_instances) 2 0 LOAD_GLOBAL 0 (Test) 3 CALL_FUNCTION 0 6 STORE_FAST 0 (a) 3 9 LOAD_GLOBAL 0 (Test) 12 CALL_FUNCTION 0 15 STORE_FAST 1 (b) 18 LOAD_CONST 0 (None) 21 RETURN_VALUE |
不,你不能。如果我这样做呢:
1 | Test() |
或者:
1 | someList[3] = Test() |
或者:
1 | someList.append(Test()) |