Skip to main content
 首页 » 编程设计

python之由于缺乏传递引用,如何在 python 2 中保持干燥

2025年05月04日14jpfss

我正在尝试编写一些目前看起来像这样的 Python 代码:

if validator("foo", "bar"): 
    self.a = accessor("foo", "bar") 
if validator("xxx", "yyy"): 
    self.b = accessor("xxx", "yyy") 

这都包含在一个类方法中,self.a和self.b是实例变量。

我想避免为 validator() 和 accessor() 重复所有这些参数。如果 python 有传递引用我会做这样的事情:

def validate_and_access(self, target_ref, parm1, parm2) 
    if validator(parm1, parm2): 
        target_ref = accessor(parm1, parm2) 

鉴于我没有传递引用,还有其他方法吗?我考虑过使用 getattr() 按名称作为字符串访问实例变量,或者甚至可能定义一个字典来包含实例变量,但这两种方法似乎都过分而且相当笨拙。

请您参考如下方法:

根据你的引用传递示例,你不能做这样的事情吗?

def validate_and_access(self, target_ref, parm1, parm2) 
    if validator(parm1, parm2): 
        setattr(self, target_ref, accessor(parm1, parm2))