循环遍历成员变量并更改其类型(在 Python 中)?

looping through member variables and changing their type (in Python)?

提问人:tomp 提问时间:9/1/2022 更新时间:9/1/2022 访问量:51

问:

是否可以迭代定义类的某些成员变量,然后更改成员变量类型?

例如,如下所示:

def __init__(self, a, b, c):
    self.A = a
    self.B = b
    self.C = c
    self.memberVarsToChange = {self.A: float, self.B: float}

def convertTypes(self):
    for item, t in self.memberVarsToChange.items():
        item = t(item)

该项显然不引用成员变量,它是循环的本地变量。有没有办法引用实际的成员变量?

非常感谢。

成员 自我 可迭代 可变

评论

0赞 chepner 9/1/2022
你为什么不一开始就初始化呢?self.A = float(a)

答:

2赞 Barmar 9/1/2022 #1

仅供参考,在 Python 中,成员变量称为属性。

您需要将属性名称存储在 中,而不是将属性存储在 中。然后,您可以使用和动态更新属性。self.memberVarsToChangegetattr()setattr()

def __init__(self, a, b, c):
    self.A = a
    self.B = b
    self.C = c
    self.memberVarsToChange = {"A": float, "B": float}

def convertTypes(self):
    for attr, t in self.memberVarsToChange.items():
        setattr(self, attr, t(getattr(self, attr)))