Pylint的 "公共方法太少 "信息是什么意思? |
您所在的位置:网站首页 › 视频hk是什么意思网络 › Pylint的 "公共方法太少 "信息是什么意思? |
这是皮林特盲目规则的另一个案例。 "类不是用来存储数据的" - 这是一个错误的说法。字典不是什么都能用的。一个类的数据成员是有意义的东西,一个字典项是可有可无的东西。证明:你可以做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 answerNamedTuple不是很好--尤其是在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 |