从字符串创建对象,可能吗?

2024-04-27 04:48:10 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能做到以下几点

这很管用

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"

这将产生与上述相同的结果。这有道理吗?你知道吗


Tags: 对象inforvaluemyanothersetappend
2条回答

事实上,^{}和一本字典就可以了。你知道吗

dictofthings = {
    'usethismodule.LoginUsername': 'my value',
    'usethismodule.LoginPassword': 'my other value'
}

for k in dictofthings:
    setattr(eval(k.split('.')[0]), k.split('.')[1], dictofthings[k])

希望这有帮助!你知道吗

你一直在说usethismodule.<something>。所以让我们假装你是对的。你知道吗

Python在sys.modules中维护当前导入的模块的dict。您可以按名称查找模块,并获得“object”。(实际上是一个module对象。)

如果您手头有一个对象,您可以硬编码访问它的一个属性,或者对它使用getattrsetattr。你知道吗

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

相关问题 更多 >