我正在阅读DiveIntoPython。
我想知道为什么我可以直接将UserDict的实例打印为字典。 详细地说,这些代码
import UserDict;
d = UserDict.UserDict({1:1, 'a':2});
print d;
print d.data;
将有输出
{'a': 2, 1: 1}
{'a': 2, 1: 1}
这些代码
class MyDict:
def __init__(self, dictData=None):
self.data = dictData;
d = MyDict({1:1, 'a':2});
print d;
print d.data;
将有输出(在我的机器上)
<__main__.MyDict instance at 0x10049ef80>
{'a': 2, 1: 1}
换句话说,我如何定义我的类,并将其实例打印为内置数据类型? 谢谢!
答案 0 :(得分:3)
如何打印对象归结为repr
- 当您从mixin继承时,它已经提供了repr
函数。另请注意,现在您可以直接从dict
继承。
在您的情况下,您可以定义
def __repr__(self):
return repr(self.data)
__str__
和__repr__
之间的区别在于,大多数__str__
应该是可读且可理解的。 __repr__
可以用来提供构建原始对象的eval
'字符串(尽管没有必要) - 请参阅这里的好答案:Difference between __str__ and __repr__ in Python