0

あるオブジェクトのプロパティを別のオブジェクトのプロパティの合計に設定し、それらのオブジェクトに変更が加えられるたびに再調整する必要があります。これを行うための最良の方法は次のとおりですか?

# object A has several object B's - (object A aggregates object B)
class objectA:
    def __init__(self, somevar):
        self.somevar = somevar

        self.list_of_Bs = [B(var) for b in range(0,2)]

        # sum of several functions or something
        self.summed_array = sum(b.array for b in self.list_of_Bs)

class objectB:
    def __init__(self, var):
        self.var = var

        self.array = gaussian_function(x, center, var, etc)
4

1 に答える 1

3

self.summed_array最も確実な方法は、プロパティを作成することだと思います。

class objectA(object):
    def __init__(self,somevar):
        ...

    @property
    def summed_array(self):
        return sum(b.array for b in self.list_of_Bs)

もちろん、この合計が高くつく場合は、これをプロパティではなくメソッドにして、計算が実行されていることをユーザーに明示することをお勧めします。その後、ユーザーは、必要に応じて値を別の方法でキャッシュするかどうかを選択できます。

他のオプションはself.list_of_Bs、リストがいつ変更されたかを認識し、objectAバインドされているインスタンスの参照を保持するように変更することです。それはもっと多くの仕事になるだろう...

于 2013-03-22T01:02:39.807 に答える