Python\uu getattr\uuu返回函数
我目前正在尝试阅读python代码库——我选择了Kenneth Reitz的方法,因为它似乎写得很好,也很简单,但是我在理解以下方法()的含义时遇到了问题:Python\uu getattr\uuu返回函数,python,codebase,Python,Codebase,我目前正在尝试阅读python代码库——我选择了Kenneth Reitz的方法,因为它似乎写得很好,也很简单,但是我在理解以下方法()的含义时遇到了问题: 虽然我很清楚magic方法\uuuu getattr\uuuu的作用,但我还是很难理解返回函数的意义(或者我将如何使用它)。因为用户期望一个可调用的函数-这在方法解析中使用,并将方法包装在任何self.s上。@jonrsharpe From docs:此方法应返回(计算的)属性值或引发AttributeError异常。我想它可以用于任何属性
虽然我很清楚magic方法
\uuuu getattr\uuuu
的作用,但我还是很难理解返回函数的意义(或者我将如何使用它)。因为用户期望一个可调用的函数-这在方法解析中使用,并将方法包装在任何self.s
上。@jonrsharpe From docs:此方法应返回(计算的)属性值或引发AttributeError异常。
我想它可以用于任何属性,而不是唯一可调用的属性。这是基于python字符串只有方法而没有属性的假设(事实上)吗?
...
def __getattr__(self, att):
def func_help(*args, **kwargs):
result = getattr(self.s, att)(*args, **kwargs)
try:
is_result_string = isinstance(result, basestring)
except NameError:
is_result_string = isinstance(result, str)
if is_result_string:
return self._new(result)
elif isinstance(result, list):
return [self._new(x) for x in result]
else:
return result
return func_help
...