私は例えば、関連する複数の属性を持つクラスを持っている:クラスオブジェクトで、属性を自動更新する方法は?
class SomeClass:
def __init__(self, n=0):
self.list = range(n)
self.listsquare = [ x**2 for x in self.list ]
私はオブジェクトを作成する場合は、通常、それは問題はないだろう、
a = SomeClass(10)
で、私は2つのリスト、a.list
を取得しますおよびa.listsquare
。
は今、私が最初に空のオブジェクトを作成し、そこに一つの属性を割り当てたい場合は、私は例えば、私は
b = SomeClass()
b.list = range(5,10)
行う場合、私はb.listsquare
が自動的になりたい、他の属性を自動的に更新することにしたいです更新され、逆もまた同様です(b.listsquare
と自動更新b.list
を割り当てます)。これは可能ですか? クラスがこれに最適ですか?
皆さんありがとうございますが、私はすべての異なる回答に完全に圧倒されています。私は自分自身を書くことを学ぶことができる誰もが完全なソリューションを与えることができますか?私はa = Foo(3)
を行う場合
- は、私が得る
a.length = 3
、a.list = [0, 1, 2]
、a.listsquare = [0, 1, 4]
:私は3つの属性
length
、list
となるようにlistsquare
でクラスFoo
を達成したいと思います。 b = Foo().list = [5, 6]
を実行すると、b.length = 2
,b.listsquare = [25, 36]
となります。c = Foo().listsquare = [4, 9]
を実行すると、c.length = 2
,c.list = [2, 3]
となります。
あなたは私たちが動作しません与えているコード)それはlistsquareを生成します。クラスは 'def'ではなく 'class'で定義され、 'def __init __(self、...)'メソッドで初期化されます。あなたは、 'self'という1つの必須パラメタと 'n'という1つのオプションのパラメタを持つ関数を定義しました。 SomeClass(10)を呼び出すと、関数は 'list'をオブジェクトに割り当てようとしますが失敗します。 - ああ、質問が再フォーマットされているように見えます...だから心配しないでください。 – tdelaney
申し訳ありませんが、私は修正を行いました。私は今それをよく知らない。 – LWZ