【发布时间】:2021-06-16 01:15:13
【问题描述】:
这就是我正在使用的:
class Vector:
def __init__(self):
self.x = 0
self.y = 0
self.z = 0
self.w = 0
self.data = [
[self.x],
[self.y],
[self.z],
[self.w]
]
是否可以在其他属性更改时更新self.data?
我知道我可以为它写一个更新函数,比如:
def update(self):
self.data = [
[self.x],
[self.y],
[self.z],
[self.w]
]
但我宁愿不调用v.update() 60 次/秒。
我也知道我不能使用其他属性并通过执行 v.data[0] = 5 来更新列表索引,但为了便于阅读,最好执行 v.x = 5(v 是 Vector 的一个实例)。
现在我只是咬v.data[0] = 5子弹...
编辑:数据是矩阵乘法的列表。
【问题讨论】:
-
为什么不把
self.data变成@property?为什么是列表列表? -
不,不是整数
-
@jonrsharpe:将
data实现为属性将阻止更新反映在向量的状态中。 (不过,列表的列表很奇怪。) -
我可能要么完全消除
data(并且可能使Vector成为序列类型),或者使x、y、z和w属性得到支持data. -
@user2357112supportsMonica 你的意思是例如如果
v.data[0] = 5发生在课外?是的,没错,可变属性可能不是一个好主意,因为它会导致令人惊讶的行为。
标签: python list class attributes