Python 类中实现的Str未使用

Python 类中实现的Str未使用,python,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 ob

让我们假设我有一个实现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>),)
Python中的容器显示表示,而不是字符串转换。您需要实现以影响对象表示

请注意,
\uuuuu str\uuuuuu
\uuuu repr\uuuuu
扮演不同的角色;该表示法用于调试,用于表示的
\uuuu str\uuu
字符串输出。如果缺少
\uuu str\uuu
,则将使用
\uu repr\uuu
,但反之亦然。

请尝试:

class test(object):
    def __str__(self):
        return("I am a dork")
    def __repr__(self):
        return("I am a dork too")

这里repr

定义
\uuuu repr\uuuu
当您将一个像tuple这样的容器转换为一个字符串时,它会得到它所包含元素的
repr
表示。
class test(object):
    def __str__(self):
        return("I am a dork")
    def __repr__(self):
        return("I am a dork too")