Python 具有动态变量名的属性
另一个动态变量问题,但与其他问题不同Python 具有动态变量名的属性,python,Python,另一个动态变量问题,但与其他问题不同 class MyClass: myvarA="alfa" myvarB="beta" myvarC="gamma" myobj=MyClass() for var in ["A", "B", "C"]: print("{}\n".format("myobj.myvar{}&qu
class MyClass:
myvarA="alfa"
myvarB="beta"
myvarC="gamma"
myobj=MyClass()
for var in ["A", "B", "C"]:
print("{}\n".format("myobj.myvar{}".format(var)))
我的目标:使用格式myvar+variable作为var名称,一行打印所有属性值
打印在最后一行中,打印“myobj.myvarA..B..C”而不是值
非常感谢您通常不想这样做,如果您需要“动态变量名”,您需要使用dict 无论如何,您可以通过以下方式完成此操作:
你为什么要这样做?因为我有很多类似名称的属性,比如示例,每个属性我都要做一些操作,所以我不想复制粘贴每个操作,而是调用所有具有类似名称的属性我看到过类似问题的答案,但每个人都用k,v构建一个dict,这不是我需要的,我需要循环遍历属性,而不指定myvarA myvarB myvarC,但myvar{variable_part}引用您的另一条评论,“我有很多类似名称的属性,比如example”,您需要对它们进行迭代—您确实需要一个dict,而不是很多属性。关于类似的问题,我见过很多次,比如“你通常不想这么做”,好吧@AKX为什么?对于OOP?将所有属性更改为dict可能需要大量工作,并且涉及程序的许多部分,值得一试?这是一个哲学上的区别——属性“意味着”比dict更具体、定义更明确,dict是与它们相关联的键和值的“袋子”。如果你需要“动态字段”,这通常意味着您需要一个dict。另外,无槽对象在内部由dict支持(请参阅实例的
\uuuuuuuuuuuuuuuuuuuuuu
属性)…非常感谢@AKX
class MyClass:
myvarA = "alfa"
myvarB = "beta"
myvarC = "gamma"
myobj = MyClass()
for var in ["A", "B", "C"]:
var_name = f"myvar{var}"
print(getattr(myobj, var_name))