我有一个定义了__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(),但只是想知道是否有更好的方法。
谢谢
发布于 2012-11-10 09:01:24
正如注释中提到的,字典存储对象。
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'>它以这种方式打印的原因是,字典在其__str__和__repr__函数中都使用其键和值的__repr__。不过,您可以随时更改您的__repr__函数,使其使用整数来减少歧义:
def __repr__(self):
return '{0}({1})'.format(str(self.__class__.__name__), self.version)示例输出:
{MyClass(1): MyClass(1)}您可以随意使用任何最适合您的格式。我还更改了您的类以从object扩展,使其成为一个新的样式类(它将语言中的类和类型结合在一起,并为类添加额外的功能(如装饰器和超级函数))。否则:
print type(o)输出
<type 'instance'>https://stackoverflow.com/questions/13317834
复制相似问题