e1101:super-of没有“append”成员(没有成员)

x7rlezfr  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(297)

我使用pylint重构其他人的代码。但是,关于错误e1101有一个错误。我不知道该怎么做才能把它修好。为了看到这个错误,我在代码中创建了一个相同格式的简单示例。
这是我的源代码示例。

  1. from typing import List
  2. class Test:
  3. def __init__(self, a: int, b: float):
  4. self.a = a
  5. self.b = b
  6. class TestSuper(List[Test]):
  7. # def __init__(self)
  8. def append(self, object_: Test):
  9. # do something
  10. return super().append(object_)

pylint错误为:

  1. Super of 'TestSuper' has no 'append' memberpylint(no-member)
yrefmtwq

yrefmtwq1#

以下代码不会产生错误。

  1. class Test:
  2. def __init__(self, a: int, b: float):
  3. self.a = a
  4. self.b = b
  5. class TestSuper(list):
  6. # def __init__(self)
  7. def append(self, object_: Test):
  8. # do something
  9. return super().append(object_)

但是,为什么要从列表继承,而只向可以追加的对象添加具有类型提示的append方法,这是有疑问的。有问题,因为解释器没有验证附加的对象的类型。例如,附加字符串仍然是可能的。例子:

  1. test_super = TestSuper()
  2. test_super.append("x")
  3. print(test_super)

相反,您可以使用香草列表对象。例子:

  1. class Test:
  2. def __init__(self, a: int, b: float):
  3. self.a = a
  4. self.b = b
  5. test_super = ["x"]
  6. test = Test(1, 1.0)
  7. test_super.append(test)
  8. print(test_super)
展开查看全部

相关问题