- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经定义了以下类方法来从 pandas.DataFrame 而不是像这样从列表中定义我的对象:
class Container(object):
@classmethod
def from_df(cls, df):
rows = [i for _, i in df.iterrows()]
return cls(rows)
和 pylint
在 return
行提示 E1120 'code-smell':
No value for argument 'cls' in constructor call
我看不出有什么问题,而且它似乎有效。有没有其他人知道它可能出了什么问题?
更新:呃,用户 rogalski
明白了(我想):我对作为参数传入的类使用相同的变量名让自己感到困惑:
def __init__(self, iterable, cls):
self.content = [cls(item) for item in iterable]
我这样做是因为我有不同类型的对象进来,这个 Container 类是这个女儿的抽象版本:
class FanContainer(Container):
def __init__(self, iterable):
super().__init__(iterable, Fan)
Fan
是需要“包含”的几个类之一。Rogalski,想写一个答案,说错误可能引用了 __init__
构造函数的名称?干杯! (现在我必须深入了解为什么我的代码没有绊倒这个......)
更新2才意识到我的编码有多无力:我基本上是这样使用它的:
fancontainer = FanContainer.from_df(df)
因为我覆盖了 FanContainer
类中的 __init__
,我想这就是我的代码仍然有效的原因吧?因此,抽象 __init__
永远不会被直接调用,因为我从不调用 Container.from_df(df)
而只调用子类的类方法。我猜可以用不同的方式做得更漂亮。
最佳答案
通常此错误与非投诉函数签名有关。
鉴于您的代码:
class Container(object):
def __init__(self, iterable, cls):
self.content = [cls(item) for item in iterable]
@classmethod
def from_df(cls, df):
rows = [i for _, i in df.iterrows()]
return cls(rows)
Pylint 将 from_df
范围对象中的 cls
解析为 Container
。类对象是可调用对象(如函数),它们返回给定类的新实例。 Pylint 调查构造函数接口(interface)并检查传递的参数是否正确。
在您的情况下,传递的参数不正确 - 缺少第二个必需参数(恰好具有相同的名称 - cls
- 但它存在于不同的分数中)。这就是 Pylint 产生错误的原因。
跟进您的编辑:Pylint 不运行您的代码。它对其进行静态分析。由于可以像 Container.from_df
那样调用它,PyLint 会警告可能的误用。
如果构造函数从未打算在子类之外使用两个参数,您可以传递默认参数并显式引发异常:
class Container(object):
def __init__(self, iterable, cls=None):
if cls is None:
raise NotImplementedError()
self.content = [cls(item) for item in iterable]
@classmethod
def from_df(cls, df):
rows = [i for _, i in df.iterrows()]
return cls(rows)
关于python - Pylint 提示 "no value for argument ' cls'”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35208443/
以 pylint-1.0.0 开头--include-ids不再允许争论。 如何得到: ************* Module foo.bar E:199,11: Module 'yaml' has
Pylint 在 Linux 运行中退出,代码为 28。这个错误代码是什么意思? 我知道这并不意味着空间不足,因为我在空 VM 上尝试了相同的命令。 最佳答案 Linux 上的 Pyline 退出代码
第 4.1 节中的文档明确指出: https://pylint.readthedocs.io/en/latest/faq.html#message-control 4.1 Is it possible
我正在寻找类似的东西 [BASIC] good-names=X, y 如在 pylintrc 中,但我想将这些名称限制为仅在单个 python 文件中有效。 我考虑过在文件顶部使
给定以下 python 代码: import git try: raise git.exc.GitCommandError("dummy", "foo") except git.exc.Git
为了识别臭代码,我想运行 pylint好像没有# pylint: disable=*说明(例如 pylint: disable=broad-except )。 是否可以禁用 disable自己在命令行
在 python 文件上运行 pylint 时,它默认显示有关 TODO 注释的警告。例如: ************* Module foo W:200, 0: TODO(SE): fix this
这个问题已经有答案了: Invoking Pylint programmatically (10 个回答) 已关闭 9 年前。 我使用Python 3.3,Windows,通过pip工具安装pylin
我已经在我在 Ubuntu 18.04 上使用的 VM 上正确安装了所有上述模块。在特定脚本或文件夹上运行它们中的任何一个时,它们会正确识别样式错误并将其输出到控制台中。例如。: (venv) ...
我正在尝试将模块添加到我的 Pylint 路径,以便可以使用 seen in this question 的解决方案导入它们.不幸的是,我期望在使用此解决方案后应该可以导入的模块似乎仍然不存在。我想检
我的 Pylint 安装导入 flask 就好了。并且使用相同的 flask 安装,我的应用程序中运行良好的 wtforms。但是,当我在导入 wtforms 的文件上运行 Pylint 时: fro
我正在使用 pylint 1.6.4和 git-pylint-commit-hook 2.1.1在预提交时对我的文件进行 lint。我也用 alembic为了生成我的迁移,它们存储在 /migrati
我正在尝试让 Eclipse 识别我在 Jenkins 中使用的 PyLint 配置文件。目前,Eclipse pylint 充斥着无用的错误。我尝试过传入 rcfile 参数。所以... Windo
在python linting docs对于 VS Code,它有这个用于将插件添加到 pylint 的示例: "python.linting.pylintArgs": ["--load-plugin
为什么 pylint 提示这个代码块?R1705: Unnecessary "elif" after "return" (no-else-return) def f(a): if a == 1
我有一个场景,当我想使用 Python 文件运行 pylint 命令时。使用我正在使用的命令提示符 python3 -m pylint test.py 除此之外,我想格式化我的消息,以便以后可以使用
$ pylint --reports=n main.py 输出: No config file found, using default configuration 最佳答案 如果您没有 No con
如何在 Pylint 中禁用“关键字参数分配周围不允许有空格”? 我找到了为什么它会检查空格( PEP 8, why no spaces around '=' in keyword argument
我正在使用带有包控制的 Sublime Text 3 前几天我通过Package Control安装了Pylint 但是不行,只要打开Sublime Text 3就跳出这个提示框 我该如何解决? 最佳
我正在使用pytorch并且pylint无法识别例如torch.stack的几个函数,但是,如果我导入torch._C as torch 似乎工作正常。 如果我执行上述操作,torch 包中存在的实际
我是一名优秀的程序员,十分优秀!