0

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}

つまり、クラスを定義し、そのインスタンスを組み込みデータ型として出力するにはどうすればよいでしょうか? ありがとうございました!

4

1 に答える 1

3

オブジェクトがどのように印刷されるかは、その結果に帰着します。reprミックスインから継承すると、すでにrepr機能が提供されています。また、最近はdict直接継承できることにも注意してください。

あなたの場合、定義することができます

def __repr__(self):
    return repr(self.data)

__str__との違い__repr__は、ほとんどの__str__場合、読みやすく、理解しやすいものにする必要があるということです。__repr__元のオブジェクトを構築する 'd 文字列を提供するために使用できるeval場合 (必須ではありません) - 違いについては、こちらの素晴らしい回答を参照してください: Python での __str__ と __repr__ の違い

于 2013-01-25T20:43:38.143 に答える