4

重複の可能性:
inspect.getmembers()vs __dict __。items()vs dir()

class Base():
    def __init__(self, conf):
        self.__conf__ = conf
        for i in self.__dict__:
            print i,"dict"
        for i in dir(self):
            print i,"dir"

class Test(Base):
      a = 1
      b = 2

t = Test("conf")

出力は次のとおりです。

__conf__ dict
__conf__ dir
__doc__ dir
__init__ dir
__module__ dir
a dir
b dir

誰かがこれについて少し説明できますか?

4

1 に答える 1

8

オブジェクト__dict__には、インスタンスの属性が格納されます。インスタンスの唯一の属性は、メソッド__conf__で設定されている唯一の属性であるためです。インスタンス、そのクラス、およびその親クラスの「興味深い」属性の名前のリストを返します。これらには、クラスとクラスから、およびPython が自動的に追加するその他のいくつかの属性が含まれます。__init__()dir()abTest__init__Base

クラス属性は各クラスの__dict__に格納されているためdir()、継承階層をたどって各クラスから情報を収集しています。

于 2012-11-09T06:07:30.317 に答える