Skip to main content
 首页 » 编程设计

python之__getattr__ 一直返回 None 即使我尝试返回值

2025年05月04日15del

尝试运行以下代码:

class Test(object): 
def func_accepting_args(self,prop,*args): 
    msg = "%s getter/setter got called with args %s" % (prop,args) 
    print msg #this is prented 
    return msg #Why is None returned? 
 
def __getattr__(self,name): 
    if name.startswith("get_") or name.startswith("set_"): 
        prop = name[4:] 
        def return_method(*args): 
            self.func_accepting_args(prop,*args) 
        return return_method 
    else: 
        raise AttributeError, name 
 
x = Test() 
x.get_prop(50) #will return None, why?!, I was hoping it would return msg from func_accepting_args  

有人解释为什么不返回 None 吗?

请您参考如下方法:

return_method() 不返回任何内容。它应该返回包装的 func_accepting_args() 的结果:

def return_method(*args): 
    return self.func_accepting_args(prop,*args)