gpt4 book ai didi

动态类变量名的 pythonic 方法(ala PHP 的 $$var)

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:06 25 4
gpt4 key购买 nike

以下代码:

class Log:

BAT_STATS = ['AB', 'R', 'H', 'HR']

def __init__(self, type):
for cat in Log.BAT_STATS:
self.cat = 0

我希望那里的循环为 BAT_STATS 中的每个键创建一个类属性,这样我就可以:

log = Log()
print log.HR;

类似于 $this->$$foo = 'bar' 的 PHP,其中 $foo 将是 'HR'。

最佳答案

也许是这个?

class Log:
BAT_STATS = ['AB', 'R', 'H', 'HR']

def __init__(self, type):
for cat in Log.BAT_STATS:
setattr(self, cat, 0)

编辑 - 哎呀,缩进有点乱。

@EOL:您是否建议将其直接放入类定义中?虽然对于某些应用程序来说,只为类而不是每个实例设置一次这些值可能会很好,但我不确定你会怎么做。在类定义中,您没有“self”或“klass”变量来调用 setattr。在类定义的末尾,Python 将 locals 字典打包用作类的成员字典。你可以直接用 locals() 读取这个字典,但我认为你不能保证你可以写回它。我想获得这种效果的最简单方法是在创建类字典后对其进行修改,但这可能会非常困惑,因为这样一来,类的行为不再仅仅从其定义中就可以清楚了。这不一定是个坏主意,但如果没有更好地了解它的使用场景,我不想推荐它。

关于动态类变量名的 pythonic 方法(ala PHP 的 $$var),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1626842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com