免責事項:私はPythonで私の最初のステップをやっているので、質問が少し馬鹿に聞こえるかもしれません。オブジェクトのすべてのフィールドを取得するには?
self
に格納されているすべての変数をリストする方法はありますか?
免責事項:私はPythonで私の最初のステップをやっているので、質問が少し馬鹿に聞こえるかもしれません。オブジェクトのすべてのフィールドを取得するには?
self
に格納されているすべての変数をリストする方法はありますか?
すべてのpythonオブジェクトには、__dict__
という特別なメンバーがあります。これは、すべてのインスタンスのメンバーを含む辞書です。
self.__dict__.keys()
は
self.__dict__['foo']
はあなたがself.foo = 1
ようなものを書いて、基本的には、BTWメンバーfoo
の値にアクセスすることができます彼らの名前をリスト作品self.__dict__['foo'] = 1
を書くことに(物事の基本的なレベルで)等価です同じように。
これは単純すぎることに注意してください。オブジェクトは属性アクセスをオーバーロードすることができます(それはいくつかの理由があります)。これは '__dict__'を不完全にするか全く役に立たなくします。より一般的には、 'property'は' __dict__'にはない属性を作成するために使われ、静かに関数を呼び出します。 '__dict__'を完全に削除する' __slots__'もあります。そして、もっと例外があると確信しています。 – delnan
@delnan本当ですが、彼は非常に基本的なユースケースについて尋ねていたので、これは良い近似です。 –
__dict__
が存在しないオブジェクトとして定義されているオブジェクトが__slots__
であっても、オブジェクトのメンバーを一覧表示するので、inspect.getmembers
が望ましい場合があります。
>>> import inspect
>>> class F:
... def __init__(self):
... self.x = 2
...
>>> inspect.getmembers(F())
[('__doc__', None), ('__init__', <bound method F.__init__ of <__main__.F instance at 0xb7527fec>>), ('__module__', '__main__'), ('x', 2)]
>>> class F:
... __slots__ = ('x')
... def __init__(self):
... self.x = 2
...
>>> inspect.getmembers(F())
[('__doc__', None), ('__init__', <bound method F.__init__ of <__main__.F instance at 0xb72d3b0c>>), ('__module__', '__main__'), ('__slots__', 'x'), ('x', 2)]
あなたが初心者なら、あなたはので、ここで簡単な質問をしていることは単純な答えです:あなたはすべてクラスやオブジェクトの内容だけではなく、変数だけでなく、メソッドや他のを見ることができますコンテンツは、dir
というコマンドで表示されます。あなたがpythonプロンプトを覗いているときには素晴らしいことです。
dir("hello") # examine string object
dir(str) # examine string class
import os
dir(os) # Examine module
を試して、はい、クラスの中から、あなたはself
だけのクラスオブジェクトであることから、self
を調べるためにそれを使用することができます。 DIR(os.stdout)
可能な重複http://stackoverflow.com/q/191010/776084:あなたはそれらについての詳細を取得するには、クラスの内容に
dir
、type
とhelp
を使用することができます。 – RanRag