首页 > 解决方案 > 创建对对象属性的引用列表

问题描述

代码中的问题是Vector.numerical_vector是浮点数副本的列表,但我需要它是引用列表,因此当 Vector.vector[n].value 更改时, Vector.numerical_vector[n] 更改为同样的值。

提前感谢您的帮助!

class Var:
    def __init__(self, val):
        self.value = float(val)

    def __float__(self):
        return self.value


class Vector:
    def __init__(self, vector):
        self.vector = vector
        self.numerical_vector = [float(x) for x in vector]

vars = [Var(i) for i in range(5)]
vector = Vector(vars)

标签: pythonoop

解决方案


在python中没有办法做到这一点。您可以做的是创建numerical_vector一个对象,该对象在访问时返回float相应vector项目的值。例如

class VectorWrapper:
    def __init__(self, vector):
        self.vector = vector

    def __getitem__(self, i):
        return float(self.vector[i])

并设置self.numerical_vector = VectorWrapper(self.vector)

如果您必须在被引用时返回一个float表示,self.numerical_vector[i]


推荐阅读