任何人都可以帮助解决这个问题: 我需要在调用类之间保存的公共属性。有机会吗?请举例说明。
谢谢!
更新:如果打开两个终端,是否有能力在类之间共享值?
答案 0 :(得分:5)
是的,直接将其分配给您的班级:
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*
除了为实例分配相同的属性名(掩盖class属性)之外,类的所有属性都在实例之间共享。您可以通过直接分配给class属性来更改该值,可以通过type(self)
或直接引用类名。通过使用type(self)
子类,可以始终引用自己的类。
答案 1 :(得分: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
答案 2 :(得分:0)
我只是answered a question like this。小心做这个类变量的事情。这是可能的,但你不会得到你期望的。
>>> 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')