Str在类中实现未使用

时间:2015-06-15 09:48:52

标签: python

让我们假设我有一个实现 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'),)

2 个答案:

答案 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