我有一个定义了__str__
和__repr__
的课程:
class MyClass:
def __init__(self, version):
self.version = version
def __repr__(self):
return self.version
myObjs = {}
o = MyClass("1")
myObjs[o] = o
print myObjs
打印哪些:
{1: 1}
如何将MyClass对象作为值存储到字典而不是字符串表示? 我本可以添加getVersion(),但只是想知道是否有更优雅的方式。
由于
答案 0 :(得分:3)
如评论中所述,字典存储对象。
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'>