誰でも質問を手伝ってもらえますか: 呼び出しクラス間で保存される共通のプロパティが必要です。機会はありますか?例を示してください。
ありがとう!
更新: 2 つのターミナルを開いた場合、クラス間で値を共有する機能はありますか?
誰でも質問を手伝ってもらえますか: 呼び出しクラス間で保存される共通のプロパティが必要です。機会はありますか?例を示してください。
ありがとう!
更新: 2 つのターミナルを開いた場合、クラス間で値を共有する機能はありますか?
はい、クラスに直接割り当てます。
class Foo(object):
bar = None # shared
def __init__(self):
type(self).bar = 'baz' # still shared, *per subclass*
Foo.bar = 'baz' # still shared, across all subclasses*
インスタンスに同じ属性名を割り当てない限り (クラス属性をマスクします)、クラスの属性はインスタンス間で共有されます。クラス名を介して、または直接参照することにより、クラス属性に直接割り当てることで、その値を変更できますtype(self)
。サブクラスを使用type(self)
することで、常に独自のクラスを参照できます。
クラス変数のことですか?このような:
class Test(object):
class_variable = None # class variable, shared between all instances
def __init__(self):
self.instance_variable = None # instance variable, one for each instance
例えば:
a = Test()
b = Test()
Test.class_variable = 10
a.instance_variable = 20
b.instance_variable = 30
a.instance_variable
=> 20 # different values
b.instance_variable
=> 30 # different values
a.class_variable
=> 10 # same value
b.class_variable
=> 10 # same value
私はちょうどこのような質問に答えました. このクラス変数のことを行うことに注意してください。可能ですが、期待どおりの結果が得られません。
>>> class Foo():
... LABELS = ('One','Two','Three')
...
>>> Foo.LABELS
('One', 'Two', 'Three')
>>> Foo.LABELS = (1,2,3)
>>> Foo.LABELS
(1, 2, 3)
>>> f = Foo()
>>> g = Foo()
>>> f.LABELS = ('a','b','c')
>>> g.LABELS
(1, 2, 3)
>>> Foo.LABELS
(1, 2, 3)
>>> f.LABELS
('a', 'b', 'c')