How to get the object name from within the class?
本问题已经有最佳答案,请猛点这里访问。
我有一个简单的类,从中创建两个对象。现在我想从类中打印对象的名称。所以像这样:
1 2 3 4 5 6 7 8 9 | class Example: def printSelf(self): print self object1 = Example() object2 = Example() object1.printSelf() object2.printSelf() |
我需要这个打印:
1 2 | object1 object2 |
不幸的是,这只是打印
有人知道我怎么做吗?
1 2 3 4 5 6 7 8 9 | >>> class A: ... def foo(self): ... print self ... >>> a = A() >>> b = a >>> c = b >>> a,b,c #all of them point to the same instance object (<__main__.A instance at 0xb61ee8ec>, <__main__.A instance at 0xb61ee8ec>, <__main__.A instance at 0xb61ee8ec>) |
创建实例时,快速黑客将传递名称:
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> class A: ... def __init__(self, name): ... self.name = name ... >>> a = A('a') >>> a.name 'a' >>> foo = A('foo') >>> foo.name 'foo' >>> bar = foo # additional references to an object will still return the original name >>> bar.name 'foo' |
对象没有"名称"。引用对象的变量不是对象的"名称"。对象不知道引用它的任何变量,尤其是因为变量不是语言的第一类主题。
如果要更改对象打印方式,请重写
如果这是出于调试目的,请使用调试器。这就是它的目的。
实现这一点的常见方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 | class Example(object): def __init__(self,name): self.name=name def __str__(self): return self.name object1 = Example('object1') object2 = Example('object2') print object1 print object2 |
印刷品:
1 2 | object1 object2 |
但是,不能保证此对象仍然绑定到原始名称:
1 2 3 4 5 | object1 = Example('object1') object2 = object1 print object1 print object2 |
按预期打印两次