让我们假设我有一个实现 str ()函数的类。当我现在将这个类的对象放入字典并使用字典的str()时,它不使用此函数!我做错了什么?
class test(object):
def __str__(self):
return("I am a dork")
a = test()
print(a)
X = {0:a}
print(str(tuple(sorted(X.items()))))
返回:
I am a dork
((0, <__main__.test object at 0x7fe5204ddbe0>),)
显然,目标是
((0, 'I am a dork'),)
答案 0 :(得分:3)
Python中的容器显示表示,而不是字符串转换。您需要实现object.__repr__()
来影响对象表示。
请注意__str__
和__repr__
扮演不同的角色;表示用于调试目的,__str__
字符串输出用于演示。如果缺少__str__
,则会使用__repr__
,反之亦然。
答案 1 :(得分:0)
尝试:
class test(object):
def __str__(self):
return("I am a dork")
def __repr__(self):
return("I am a dork too")
此处 repr doc