检查Plone项目中认为有害的hasattr函数
项目描述
Flake8 Plone hasattr插件
Python标准hasattr在Plone项目中被认为是危险的。
hasattr的(隐藏)问题是它会吞没异常,而在您的正常业务逻辑中您真的不希望这样。
特别是在Plone环境中,这可能会导致吞没数据库错误或权限异常等。
以以下代码为例
>>> class Foo(object):
... @property
... def my_attr(self):
... raise ValueError('nope, nope, nope')
...
>>> bar = Foo()
>>> bar.my_attr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in my_attr
ValueError: nope, nope, nope
>>> hasattr(Foo, 'my_attr')
True
>>> hasattr(bar, 'my_attr')
False
应该做的是
>>> getattr(bar, 'my_attr', None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in my_attr
ValueError: nope, nope, nope
或者,如果您想处理异常
>>> try:
... value = getattr(bar, 'my_attr', None)
... exception ValueError:
... value = None
此插件基于在plone.recipe.codeanalysis中存在的python检查器。
安装
使用pip安装
$ pip install flake8-plone-hasattr
要求
Python 3.8, 3.9, 3.10, 3.11和pypy3
flake8
许可协议
GPL 2.0
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
flake8_plone_hasattr-1.1.1.tar.gz (13.3 kB 查看哈希值)
构建分发
关闭
flake8_plone_hasattr-1.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e2f277739a903fdb7c9cd9d43c778f83bc2768ded3fb5228345f98408ece336 |
|
MD5 | 650d1ba0eedf99d4aca99f7f47d52faf |
|
BLAKE2b-256 | c39c8ddcd46c3b5886719c44d2c0a9a6ed09ed2f217eb1753f4ee29ad92f76b2 |
关闭
flake8_plone_hasattr-1.1.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1cba36aa7547fa309a61da65a4b4276401ca791a69c717320c690688711676bb |
|
MD5 | d6756fb0fe8d8f0de9d9423dd7319ad3 |
|
BLAKE2b-256 | e40cdbc94807ad4aeae99772c351ecb81137d6fccd852b99c112f63ba7258b85 |