如评论中所述,字典正在存储对象。
class MyClass(object):
def __init__(self, version):
self.version = version
def __repr__(self):
return self.version
myObjs = {}
o = MyClass("1")
myObjs[o] = o
print type(o)
print o.__class__
print myObjs
print type(myObjs[o])
打印以下内容:
<class '__main__.MyClass'>
<class '__main__.MyClass'>
{1: 1}
<class '__main__.MyClass'>
它以这种方式打印的原因是因为字典将__repr__
其键和值的 用于其__str__
和__repr__
功能。您始终可以更改您的__repr__
函数,以减少整数的歧义:
def __repr__(self):
return '{0}({1})'.format(str(self.__class__.__name__), self.version)
样本输出:
{MyClass(1): MyClass(1)}
随意使用最适合您的格式。我还更改了您的类以从对象扩展以使其成为新样式类(它将语言中的类和类型结合在一起,并为类添加了其他功能(例如装饰器和超级函数))。除此以外:
print type(o)
输出
<type 'instance'>