如何在类中设置变量以包含另一个变量并在另一个值更改时更新?

时间:2014-01-03 12:58:52

标签: python class variables object

我觉得很难解释,所以这就是我的意思:

>>> class a(object):
    a = 'z'
    b = 'b'
    c = 'c'
    all = a,b,c


>>> print a.all
('z', 'b', 'c')
>>> a.a = 'a'
>>> print a.a
a
>>> print a.all
('z', 'b', 'c')

如何让a.all准确到班上的内容 我希望a.all('a','b','c')

我认为这是因为在创建类时,会在那里设置值。 但我想我可能只需要在每次访问它时设置'all'值,我只是不想输入所有变量的名称。这是在一个有20多个变量的类中应用的。

也许有人会知道用函数重置'all'变量的有效方法。

2 个答案:

答案 0 :(得分:4)

all成为property

class A(object):
    a = 'z'
    b = 'b'
    c = 'c'

    @property
    def all(self):
        return (self.a, self.b, self.c)

请注意,您必须创建该类的实例才能使其正常工作:

>>> a = A()
>>> a.all
('z', 'b', 'c')
>>> a.a = 'a'
>>> a.all
('a', 'b', 'c')

答案 1 :(得分:3)

@property的一个解决方案:

class a(object):
    a = 'z'
    b = 'b'
    c = 'c'

    @property
    def all(self):
        return self.a, self.b, self.c

A = a()

print A.all

a.a = 'a'
print A.all

@property需要一个实例而不是类。