2016-04-07 8 views
0

クラスメソッドの内部でクラスメソッドと呼ばれるクラスオブジェクトのクラスインスタンス変数にアクセスしようとしています。私はcls.__dict__を試しましたが、私が欲しいものを私に与えてくれません。私のコードは、私ができるようにしたいと思うタイプの例です。私は.save()class Users()userインスタンス内のすべてのインスタンス変数の名前と値を出力します。それが重要かどうかわかりませんが、メソッドを呼び出すクラスは定義されているクラスと同じクラスではなく、それを継承するクラスです。クラスメソッドは、私には比較的新しいもので、私はそれらを100%快適にしているわけではありません。クラスメソッドを呼び出しているクラスのインスタンス変数にアクセスしようとしています

@classmethod 
def save(cls): 
    dictionary = cls.__dict__ 
    print (dictionary) 
user = Users() 
user.save() 
+1

インスタンスのデータにアクセスするには、なぜ 'classmethod'メソッドをマークしましたか?これは、通常の方法のためのものです。 – user2357112

答えて

0

メソッドがインスタンスを持つかどうかに依存する場合は、それをクラスメソッドにしないでください。代わりにclassmethodデコレータを削除し、save()def save(self):と定義します。 self.__dict__を使用できます。 @classmethodを使用すると、インスタンスを持たずにメソッドを呼び出すことができます。メソッドは代わりにクラスを最初の引数として呼び出されます。インスタンスが必要な場合、そのデコレータは非生産的です。

関連する問題