迭代并更改py3中类常量的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代并更改py3中类常量的值相关的知识,希望对你有一定的参考价值。

我试图迭代class.__dict__并改变它的常量。我的工作代码适用于python 2,但不适用于python 3。这是在py2中工作的代码:

class SOMECLASS:
    a = 'Something'
    b = 'Something else'

change = vars(SOMECLASS)
for k, v in change.items():
    if not '__' in k:
        change[k] = 'some_new_value'

独立使用此代码是py3抛出TypeError: 'mappingproxy' object does not support item assignment。为了绕过这个,我对代码做了这个改动:

change = dict(vars(rng.JSCSS))

但这不起作用,因为当循环停止时,change恢复到原始值。谷歌搜索,setattr功能不断出现,但这不适用于我想要完成的任务。

我实际上正在转换我的原始代码,这对py2来说也适用于py3。

答案

setattr确实适用于此,您可以使用它来更改类的属性:

class SOMECLASS:
    a = 4
    b = 4

change = vars(SOMECLASS)


for i in change:
    if not '__' in i:
        setattr(SOMECLASS, i, 5)

x = SOMECLASS()
print(x.a)

输出:

5

以上是关于迭代并更改py3中类常量的值的主要内容,如果未能解决你的问题,请参考以下文章

同时迭代两列并根据条件更改单元格的值

迭代表并根据跨度值更改td背景颜色

从片段函数更改 TextView 的值

[PY3]——基本语法

PHP中类中成员及常量

Dart中类的getter和setter