web-dev-qa-db-ja.com

クラス変数と値の辞書を取得する

私はすべてのクラス変数をキーとして返し、値を辞書の値として返すメソッドに取り組んでいます。たとえば、次のようになります。

first.py

class A:
    a = 3
    b = 5
    c = 6

次に、second.pyで、このような辞書を返すメソッドまたは何かを呼び出すことができるはずです。

import first

dict = first.return_class_variables()
dict

その場合、dictは次のようになります。

{'a' : 3, 'b' : 5, 'c' : 6}

これはアイデアを説明するための単なるシナリオです。もちろん、それほど簡単ではないと思いますが、dictを使用できるように、この問題を処理する方法についてのアイデアがあれば大好きです。変数、値の組み合わせをキー、値として持つ辞書をクラス変数に渡すことにより、クラス変数の値を設定します。

13
Plaix

関数と組み込みのクラス属性を除外する必要があります。

>>> class A:
...     a = 3
...     b = 5
...     c = 6
... 
>>> {key:value for key, value in A.__dict__.items() if not key.startswith('__') and not callable(key)}
{'a': 3, 'c': 6, 'b': 5}
26
afkfurion

A.__dict__でdict内包表記を使用し、__で開始および終了するキーを除外します。

>>> class A:
        a = 3
        b = 5
        c = 6
...     
>>> {k:v for k, v in A.__dict__.items() if not (k.startswith('__')
                                                             and k.endswith('__'))}
{'a': 3, 'c': 6, 'b': 5}
1

このようなもの?

  class A(object):
      def __init__(self):
          self.a = 3
          self.b = 5
          self.c = 6

  def return_class_variables(A):
      return(A.__dict__)


  if __name__ == "__main__":
      a = A()
      print(return_class_variables(a))

これは

{'a': 3, 'c': 6, 'b': 5}
1
nye17