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

Python 如何在类中设置一个变量以包含另一个变量,并在其他值更改时更新?,python,class,variables,object,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') 我怎样才能准确地回答课堂上的问题呢

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

>>> 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,所有的都是“a”,“b”,“c”

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

或者可能有人知道一种有效的方法,可以使用函数重置“all”变量。

使all成为:

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

>>> a = A()
>>> a.all
('z', 'b', 'c')
>>> a.a = 'a'
>>> a.all
('a', 'b', 'c')
一个带有@property的解决方案:


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

是否希望a、b、c和all都是类的属性而不是实例?若然,原因为何?使obj.all(其中obj=类)工作相对容易,为class.all做同样的事情比较难,部分原因是它是一个更加模糊的用例。在这种特殊情况下,您可能应该使用命名元组,而不是类或其可变版本,记录。我在做一些研究,研究如何创建一个可以克隆的类,然后进行编辑,不影响另一个类,但我还希望克隆的类能够以不同的方式进行克隆,以便第二个克隆与第三个克隆同步。我还研究了如何获得作为列表返回的所有值,并且只被告知在类中添加一个函数即可。但是克隆类并为克隆生成别名时会出现一些复杂的情况。Martijn Pieters,我是堆栈溢出成员,我想感谢你让我的问题看起来更形象,这真是太好了。这会引发一个错误:NameError:全局名称“b”未定义。@275365:Ick,我可以发誓我已经加入了自我。我是罪过,甜心。谢谢,这解决了问题,并且它与我想在课堂上做的一切都兼容
>>> a = A()
>>> a.all
('z', 'b', 'c')
>>> a.a = 'a'
>>> a.all
('a', 'b', 'c')
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