新类中的空列表

我有下面的代码。Class1 将值分配给列表(list1、list2、list3)。在 Class2 中使用这些列表时,用作calc函数内部测试的打印语句打印空列表 '[]' 而不是存储在 Class1 中的数据。所以计算也会返回一个空值。


    class Class2(Class1):

        def __init__(self, Class1):

            self.arg1 = Class1.arg1

            self.arg2 = Class1.arg2

            self.arg3 = Class1.arg3

            self.arg4 = []


        def calc(self, Class1):

            for row in Class1.arg1:

                self.arg4.append(Class1.list2  + Class1.list3)

                print(Class1.arg1)

            return self.arg4    


    cInput = Class1([],[],[])            

    Test = Class2(cInput ).calc(cInput)

下面是我的 Class1 和我如何填充列表的示例(Class1 功能正常)


class Class1:

  def __init__(self, list1, list2, list3):

    self.arg1= list1

    self.arg2= list2

    self.arg3= list3


def getList1(filename1):

    with open(filename1, "r") as csv1  

        csvReader1 = csv.DictReader(csv1)

        list1= []

        for row in zip(csvReader1):  

          list1.append((row1["arg1"]))


        return list1


幕布斯7119047
浏览 173回答 3
3回答

素胚勾勒不出你

我认为如何在 Python 中使用继承存在一些混淆。从类继承时,子类自然可以访问其父类的变量。无需在__init__函数内手动复制它。您可以简单地通过调用父级的构造函数super()并将其重用于子级。class Class1:    def __init__(self, list1, list2, list3):        self.arg1 = list1        self.arg2 = list2        self.arg3 = list3class Class2(Class1):    def __init__(self, list1, list2, list3):        super().__init__(list1, list2, list3)        self.arg4 = []    def calc(self):        for row in self.arg1:            self.arg4.append(self.arg2 + self.arg3)            print(self.arg1)        return self.arg4cInput = Class2([], [], [])Test = cInput.calc()我希望代码能消除一些困惑。不过最后一点:您是否尝试使您的getList1方法静态?这样,在声明没有self关键字的函数时会出错。

萧十郎

您可以使用 getList1 填充 Class1。在您的示例中,您只需使用空列表初始化它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python