2016-12-19 11 views
0

Atomatom.apiから継承すると、メンバー変数を作成できません。Atom APIから継承するクラスに変数を作成できません

これについてはどのようなメカニズムが説明されていますか? b.init()が実行されると

from atom.api import Atom 

class A: 
    def init(self): 
     self.var = 0 

class B(Atom): 
    def init(self): 
     self.var = 0 

a = A() 
a.init() 

b = B() 
b.init() 

、私はエラーMSGを取得:

AttributeError: 'B' object has no attribute 'var'

+0

私はその原子が 'メモリ効率の良いPythonオブジェクトを作成するためのフレームワーク 'であると考えています。これにより、通常の割り当てが無効になる可能性があります。どのようにして行うことができるかを知るには、[atom](https://github.com/nucleic/atom)のドキュメントを読んでください。 –

答えて

2

アトムが記述子をオーバーライドしています。彼らはゲッター(self.x)とセッター(self.x = 42)の使用のさまざまな動作を担当しています。だからあなたはエラーを持っています。詳細については読み:

1)についての記述子をPythonで:https://docs.python.org/3/howto/descriptor.html

2)についてのAtomフレームワークを:https://pypi.python.org/pypi/atom/0.3.6

+0

おそらくあなたはあなたの答えに各リンクの関連部分を追加することができますか? –

3

はあなたのような変数を宣言したクラスの静的メンバ

class B(Atom): 

    var = Range(low=0) 

    def init(self): 
     self.var = 0 

有効なクラスフィールドとして​​とみなされます。

+0

答えをありがとう。 –