Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有动态变量名的属性_Python - Fatal编程技术网

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))