-3

誰でも質問を手伝ってもらえますか: 呼び出しクラス間で保存される共通のプロパティが必要です。機会はありますか?例を示してください。

ありがとう!

更新: 2 つのターミナルを開いた場合、クラス間で値を共有する機能はありますか?

4

3 に答える 3

6

はい、クラスに直接割り当てます。

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)することで、常に独自のクラスを参照できます。

于 2013-06-21T22:12:16.257 に答える
3

クラス変数のことですか?このような:

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
于 2013-06-21T22:12:35.650 に答える
2

私はちょうどこのような質問に答えました. このクラス変数のことを行うことに注意してください。可能ですが、期待どおりの結果が得られません。

>>> 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')
于 2013-06-21T22:39:26.263 に答える