Python属性解释

Python属性解释,python,Python,我正在浏览Kenneth Reitz提供的Python请求库的代码(太棒了!)。我遇到了一个名为\uuuu attrs\uuu的类变量(见下文)。试图通过Google和SymbolHound找到一些关于它的信息,但没有成功 这是标准的Python吗?我在哪里可以找到更多信息?有人能启发我吗 发件人: 课堂会话(SessionRedirectMixin): ... __属性=[ “标题”、“cookies”、“身份验证”、“代理”、“挂钩”、“参数”、“验证”, “证书”、“预取”、“适配器”、“

我正在浏览Kenneth Reitz提供的Python
请求
库的代码(太棒了!)。我遇到了一个名为
\uuuu attrs\uuu
的类变量(见下文)。试图通过Google和SymbolHound找到一些关于它的信息,但没有成功

这是标准的Python吗?我在哪里可以找到更多信息?有人能启发我吗

发件人:

课堂会话(SessionRedirectMixin):
...
__属性=[
“标题”、“cookies”、“身份验证”、“代理”、“挂钩”、“参数”、“验证”,
“证书”、“预取”、“适配器”、“流”、“信任环境”,
“max_重定向”,
]
定义初始化(自):
#:每个邮件上发送的不区分大小写的邮件头字典
#::类:`Request`从该
#::类:`Session`。
self.headers=default_headers()

这不是标准的Python。据我所知,它只在类的后面的
\uuu getstate\uuu
方法中使用:

def __getstate__(self):
    state = dict((attr, getattr(self, attr, None)) for attr in self.__attrs__)
    state['redirect_cache'] = dict(self.redirect_cache)
    return state

名称
\uuuu attrs\uuuu
是一个糟糕的选择,因为以
\uuuu
开头和结尾的名称是为核心Python语言功能保留的。

它不是标准的,因为它不是Python对象模型的一部分

请求模块也使用它(响应对象)作为参考

它只是一种隐藏某些状态的方法(至少尽可能隐藏,因为Python中没有真正隐藏的东西)

这段代码的编写者只是使用Python对象模型的一部分调用来委托给这个字典:

return {attr: getattr(self, attr, None) for attr in self.__attrs__}

看起来他们可能打算使用@RyanHaining:他们设置了
\uuu attrs\uuuu
中未列出的属性,例如
self.redirect\u cache
。看起来这些属性正是他们想要在
\uuuu getstate\uuuuu
中序列化的属性。这仅用于调试(开发人员模式),aiohttp为此使用属性
return {attr: getattr(self, attr, None) for attr in self.__attrs__}