jlc*_*lin 28
谢谢@Dharmesh.这就是我所需要的.只需要进行一项更改.该模块不会自行导入,以便获取我可以执行的模块对象:
setattr(sys.modules[__name__], 'attr1', 'attr1')
Jef*_*uer 10
如果在运行时之前不知道属性名称,请使用setattr:
>>> import mymodule
>>> setattr(mymodule, 'point', (1.0, 4.0))
>>> mymodule.point
(1.0, 4.0)
Run Code Online (Sandbox Code Playgroud)
小智 5
模块属性是模块全局范围内的变量。
如果你想在“运行时”从模块本身设置一个属性,正确的方法是
globals()['name'] = value
Run Code Online (Sandbox Code Playgroud)
(注意:此方法仅适用于全局变量,不适用于本地变量。)
如果要从导入模块的范围设置属性,只需设置它:
import myModule
setattr(myModule, 'name', 10)
Run Code Online (Sandbox Code Playgroud)
完整示例:
#m.py
def setGlobal(name, value):
globals()[name] = value
Run Code Online (Sandbox Code Playgroud)
——
#main.py
import m
m.setGlobal('foo', 10)
print(m.foo) #--> 10
#Moreover:
from m import foo
print(foo) #--> 10 (as Expected)
m.setGlobal('foo', 20)
print(m.foo) #--> 20 (also as expected)
#But:
print(foo) #--> 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10990 次 |
| 最近记录: |