Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python\uu getattr\uuu返回函数_Python_Codebase - Fatal编程技术网

Python\uu getattr\uuu返回函数

Python\uu getattr\uuu返回函数,python,codebase,Python,Codebase,我目前正在尝试阅读python代码库——我选择了Kenneth Reitz的方法,因为它似乎写得很好,也很简单,但是我在理解以下方法()的含义时遇到了问题: 虽然我很清楚magic方法\uuuu getattr\uuuu的作用,但我还是很难理解返回函数的意义(或者我将如何使用它)。因为用户期望一个可调用的函数-这在方法解析中使用,并将方法包装在任何self.s上。@jonrsharpe From docs:此方法应返回(计算的)属性值或引发AttributeError异常。我想它可以用于任何属性

我目前正在尝试阅读python代码库——我选择了Kenneth Reitz的方法,因为它似乎写得很好,也很简单,但是我在理解以下方法()的含义时遇到了问题:


虽然我很清楚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
...