【发布时间】:2013-02-01 16:50:56
【问题描述】:
我有一个具有多个相关属性的类,例如:
class SomeClass:
def __init__(self, n=0):
self.list = range(n)
self.listsquare = [ x**2 for x in self.list ]
如果我正常地制作一个没有问题的对象,用
a = SomeClass(10)
我会得到 2 个列表,a.list 和 a.listsquare。
现在,如果我想先创建一个空对象,然后为其分配一个属性,我希望其他属性自动更新,例如,如果我这样做了
b = SomeClass()
b.list = range(5,10)
我希望b.listsquare 自动更新,反之亦然(分配b.listsquare 和自动更新b.list)。这可能吗? Class 是正确的选择吗?
谢谢大家,但我完全被所有不同的答案弄得不知所措。任何人都可以提供一个完整的解决方案,以便我可以自己学习编写吗?
我想实现一个具有 3 个属性 length、list 和 listsquare 的类 Foo,这样:
- 如果我输入
a = Foo(3),我会得到a.length = 3、a.list = [0, 1, 2]、a.listsquare = [0, 1, 4]。 - 如果我输入
b = Foo().list = [5, 6],我会得到b.length = 2、b.listsquare = [25, 36]。 - 如果我输入
c = Foo().listsquare = [4, 9],我会得到c.length = 2、c.list = [2, 3]。
【问题讨论】:
-
您给我们的代码不起作用。类由 'class' 而不是 'def' 定义,并通过 'def __init__(self, ...)' 方法初始化。您已经定义了一个函数,其中包含 1 个称为“self”的必需参数和 1 个称为“n”的可选参数。当您调用 SomeClass(10) 时,该函数尝试将“列表”分配给 10 对象并失败。 - 哦,看起来问题正在重新格式化......所以没关系。
-
抱歉,我进行了更正。我现在对它不是很熟悉。
标签: python class attributes