__getattr__
and __setattr__
works well when i get or set an object s attributes using dot notation.
How do i intercept getting and setting module global variables from inside the module?
I 分级模块类型:
from types import ModuleType
class WUserModule(ModuleType):
def __init__(self, name):
super().__init__(name)
def __setattr__(self, name, value):
if name in self.__dict__:
super().__setattr__(name, value)
return
print( Set name {}, value {} .format(name, str(value)))
def __getattr__(self, name):
print( Get name {} .format(name))
a. 建立空置模块和载荷代码:
module = WUserModule( form_module )
with open( user_module.py , r , encoding= utf8 ) as f:
exec(f.read(), module.__dict__)
编码载于<代码>用户_module.py:
a=1
print(a)
我需要一些办法来拦截可变的<代码>a。 在装货代码中,预期能够使用模块<编码>全球(<>)中不存在的某些变量,并且希望替代所要求的数值。
最新资料:
以上代码按需要列出的t work:a <>>/code>的检索没有反映在
上。
我正在利用PyQt4撰写平台,其他用户(方案者)在平台上添加处理与这些表格互动的形式和单元。 表格本身可通过投放变量form
进入用户模块。 我想让用户能够以更简单的方式从植被的形式获取价值。 相反,没有写作if form.myCheck Box.isChecked()
或form.myCheck Box.setChecked(myValue)
i 想提供一条捷径:if myCheck Box
and
myCheck Box = myValue
,拦截价值获取,并在以下背景下进行必要的工作:
def __getattr__(self, name):
formWidget = getatttr(form, name)
if isinstance(formWidget, QLineEdit):
formWidget.setText(value)
...