在Python中打印类作为内置DataType?

时间:2013-01-25 20:37:57

标签: python python-2.7

我正在阅读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}

换句话说,我如何定义我的类,并将其实例打印为内置数据类型? 谢谢!

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