Python 如何从类中获取对象名?

Python 如何从类中获取对象名?,python,class,object,Python,Class,Object,我有一个简单的类,我从中创建了两个对象。现在我想从类中打印对象的名称。比如说: class Example: def printSelf(self): print self object1 = Example() object2 = Example() object1.printSelf() object2.printSelf() 我需要这个来打印: object1 object2 不幸的是,这只是打印 有人知道我怎么做吗?对象没有“名称”。引用对象的变量不是对象

我有一个简单的类,我从中创建了两个对象。现在我想从类中打印对象的名称。比如说:

class Example:
    def printSelf(self):
        print self

object1 = Example()
object2 = Example()

object1.printSelf()
object2.printSelf()
我需要这个来打印:

object1
object2
不幸的是,这只是打印


有人知道我怎么做吗?

对象没有“名称”。引用对象的变量不是对象的“名称”。对象无法知道引用它的任何变量,尤其是因为变量不是语言的第一类主题

如果要更改对象的打印方式,请重写
\uuuu repr\uuuu
\uuuu unicode\uuu


如果这是为了调试,请使用调试器。这就是它的用途。

object1只是一个指向实例对象的标识符(或变量),对象没有名称

>>> 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>)

通常的做法如下:

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
印刷品:

object1
object2
但是,不能保证此对象仍然绑定到原始名称:

object1 = Example('object1')
object2 = object1

print object1
print object2

按预期打印两次
object1
。如果您想查看隐藏的内容,请使用调试器

您所说的对象名是指引用的名称(object1、object2等)?是的。请原谅我没有明确说明这一点,我将编辑我的问题。请参阅我的原始帖子:stackoverflow.com/a/59364138/5088165这是否意味着我试图做的是不可能的?@kramer65是的,你无法在python中获得变量名。它们只是访问对象的引用。我想你的意思是对象没有名称;变量由一个名称和一个值组成(尽管说Python有绑定到对象的标识符比说它有变量更正确)。真遗憾。我只是从同一个类创建了两个对象。其中一个似乎出了问题。所以为了调试,我想打印其中一个对象的一些信息,但不打印另一个对象的信息。这就是为什么我想做一个if self==“someObject”:打印“someinfo”。但在这种情况下,我必须找到一个不同的解决方案。谢谢@kramer65您的问题的解决方案是使用调试器,而不是破坏您的代码您不需要打印object1.name和object2.name!?编辑:没有注意到_ustr__; dunder,但不确定何时调用它。
object1 = Example('object1')
object2 = object1

print object1
print object2