迭代并更改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中类常量的值的主要内容,如果未能解决你的问题,请参考以下文章