Pylint的 "公共方法太少 "信息是什么意思?

您所在的位置:网站首页 视频hk是什么意思网络 Pylint的 "公共方法太少 "信息是什么意思?

Pylint的 "公共方法太少 "信息是什么意思?

2023-03-21 09:21| 来源: 网络整理| 查看: 265

这是皮林特盲目规则的另一个案例。

"类不是用来存储数据的" - 这是一个错误的说法。字典不是什么都能用的。一个类的数据成员是有意义的东西,一个字典项是可有可无的东西。证明:你可以做dictionary.get('key', DEFAULT_VALUE)来防止一个KeyError,但没有简单的__getattr__与默认。

Recommended ways for using structs

我需要更新我的答案。现在--如果你需要一个struct,你有两个不错的选择。

a) Just use attrs

这些是一个库,可以用来做这个。

https://www.attrs.org/en/stable/

import attr @attr.s class MyClass(object): # Or just MyClass: for Python 3 foo = attr.ib() bar = attr.ib()

你会得到额外的东西:不写构造函数、默认值、验证、__repr__、只读对象(取代namedtuples,甚至在Python 2中)等等。

b) Use dataclasses (Py 3.7+)

根据hwjp的评论,我也推荐dataclasses。

https://docs.python.org/3/library/dataclasses.html

这几乎和attrs一样好,是一个标准的库机制("包含电池"),除了Python 3.7以上,没有额外的依赖。

The rest of the previous answer

NamedTuple不是很好--尤其是在Python 3的typing.NamedTuple之前。 https://docs.python.org/3/library/typing.html#typing.NamedTuple

you definitely should check out the "class derived from NamedTuple" pattern. Python 2 - namedtuples created from string descriptions - is ugly, bad and "programming inside string literals" stupid.

我同意目前的两个答案("考虑使用其他东西,但Pylint并不总是正确的"--公认的答案,以及 "使用Pylint压制评论"),但我有自己的建议。

让我再一次指出这一点。有些课程是为了just来存储数据。

现在还可以选择consider - use property-ies.

class MyClass(object): def __init__(self, foo, bar): self._foo = foo self._bar = bar @property def foo(self): return self._foo @property def bar(self): return self._bar

上面你有只读属性,这对价值对象来说是可以的(例如,像领域驱动设计中的那些),但你也可以提供设置器--这样你的类将能够对你有的字段负责--例如做一些验证等等(如果你有设置器,你可以在构造函数中使用它们来分配,即。替换代码17】而不是直接的self._foo = foo,但是要注意,设置器可能假定其他字段已经被初始化了,然后你需要在构造函数中进行自定义验证)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3