私は、フィールドが3つ、a
、b
、sum
のクラスがあるとします。 3番目の値は、常にa
とb
の合計に等しくなければなりません。Kivyでレイジープロパティを作成するにはどうすればよいですか?
は、純粋なPythonでは、これは単に実装されていたであろう:Kivyでしかし
class MyClass(object):
def __init__(self, a, b):
self.a = a
self.b = b
@property
def sum(self):
return self.a + self.b
、我々はフレームワークのプロパティ記述子を使用することをお勧めします。 sum
を含む前に、クラスは次のようになります。
class MyClass(Widget):
a = NumericProperty()
b = NumericProperty()
def __init__(self, a, b, **kwargs):
super(MyClass, self).__init__(**kwargs)
self.a = a
self.b = b
しかし、どのように私はsum
プロパティを実装する必要がありますか?私は良いオール '@property
を使用することができます。しかし、代わりにKivy Property
オブジェクトを使用してはいけませんか?
これを達成するためのKivyのベストプラクティスは何でしょうか?
あなたはNumericPropertyが実際に何をするかに見えたことがありますか? sumプロパティを通常どおりにすることができ、 'sum = NumericProperty'を実行することも可能です – TankorSmash
sumにアクセスするまでsumを評価したくない場合は、通常のpythonプロパティを使っても問題ありません。 self.aまたはself.bが変更されるたびに再評価されるようにするには、kvルール 'sum:self.a + self.b'を使用してNumericPropertyを使用できます。 Kivyのイベントシステムと一緒に。 – inclement