2

クラスをインポートせずに、クラスで定義されている変数のリストを取得するにはどうすればよいですか?

vars(obj)__doc____file____name____package__ospdbなどの不要なブリルチン変数を除いて、クラス内のすべての変数を返します。

4

2 に答える 2

1

class変数またはインスタンス変数を取得するには、いくつかの方法があります。'__builtin__'組み込み関数を 2 つのアンダースコア文字 ( )で囲むことを強制するコーディング規則を活用します。

class foo:
    baz = 51
    def __init__(self):
        self.bar = 42

>>> vars(foo)
{'__doc__': None,
 '__init__': <function __init__ at 0x02A35B70>,
 '__module__': '__main__',
 'baz': 51}
>>> {k:v for k,v in vars(foo).items() if k[:2]!="__" and k[-2:]!="__"}
{'baz': 51}
>>> obj = foo()
>>> vars(obj)
{'bar': 42}
于 2012-05-26T14:21:22.840 に答える
0

ドキュメントを見ると、vars が使いたいものなのだろうか

引数がない場合、vars() は locals() のように機能します。locals ディクショナリへの更新は無視されるため、locals ディクショナリは読み取りにのみ役立つことに注意してください。

SOでこの質問が表示されますが、それはあなたが望むもののようです。

間違っていたら教えて

于 2012-05-26T14:17:25.320 に答える