是否可以执行以下操作
这有效
usethismodule.LoginUsername="my value"
usethismodule.LoginPassword="another value"
但是在代码运行之前我不知道对象的第二部分,我想我想要的是这个
listofthings=[]
listofthings.append('usethismodule.LoginUsername')
listofthings.append('usethismodule.LoginPassword')
for value in listofthings:
value="A value I set"
这与上述结果相同。这有意义吗?
答案 0 :(得分:2)
事实上,setattr
和字典可以解决这个问题。
dictofthings = {
'usethismodule.LoginUsername': 'my value',
'usethismodule.LoginPassword': 'my other value'
}
for k in dictofthings:
setattr(eval(k.split('.')[0]), k.split('.')[1], dictofthings[k])
希望这有帮助!
答案 1 :(得分:0)
你一直在说usethismodule.<something>
。所以,让我们假装你是对的。
Python在dict
中维护了sys.modules
当前导入的模块。您可以按名称查找模块,并获取&#34;对象&#34;。 (实际上是一个module
对象。)
如果您手头有对象,则可以对其中一个属性进行硬编码,也可以对其使用getattr
或setattr
。
import sys
module_name = "usethismodule" # I don't know where this come from.
utm = sys.modules[module_name]
utm.LoginUsername = "xyzzy"
utm.LoginPassword = "secret123"
# or
pw_attr_name = "passWord" # Maybe you read this from a config file?
setattr(utm, pw_attr_name, "secret123")