为了账号安全,请及时绑定邮箱和手机立即绑定

新类中的空列表

新类中的空列表

幕布斯7119047 2021-07-26 17:40:30
我有下面的代码。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= list3def getList1(filename1):    with open(filename1, "r") as csv1          csvReader1 = csv.DictReader(csv1)        list1= []        for row in zip(csvReader1):            list1.append((row1["arg1"]))        return list1
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我认为如何在 Python 中使用继承存在一些混淆。从类继承时,子类自然可以访问其父类的变量。无需在__init__函数内手动复制它。您可以简单地通过调用父级的构造函数super()并将其重用于子级。


class Class1:


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

        self.arg1 = list1

        self.arg2 = list2

        self.arg3 = list3


class 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.arg4


cInput = Class2([], [], [])


Test = cInput.calc()

我希望代码能消除一些困惑。不过最后一点:您是否尝试使您的getList1方法静态?这样,在声明没有self关键字的函数时会出错。


查看完整回答
反对 回复 2021-08-03
?
萧十郎

TA贡献1815条经验 获得超13个赞

您可以使用 getList1 填充 Class1。在您的示例中,您只需使用空列表初始化它。


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号