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

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

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

from typing import List

class Test:
    def __init__(self, a: int, b: float):
        self.a = a
        self.b = b

class TestSuper(List[Test]):
    # def __init__(self)
    def append(self, object_: Test):
        # do something
        return super().append(object_)

pylint错误为:

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

yrefmtwq1#

以下代码不会产生错误。

class Test:
    def __init__(self, a: int, b: float):
        self.a = a
        self.b = b

class TestSuper(list):
    # def __init__(self)
    def append(self, object_: Test):
        # do something
        return super().append(object_)

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

test_super = TestSuper()
test_super.append("x")
print(test_super)

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

class Test:
    def __init__(self, a: int, b: float):
        self.a = a
        self.b = b

test_super = ["x"]
test = Test(1, 1.0)
test_super.append(test)
print(test_super)

相关问题