使用另一个类的__init__值

时间:2018-10-26 10:00:23

标签: python

class Class1:
  def __init__(self, list1, list2, list3):
    self.arg1= list1
    self.arg2= list2
    self.arg3= list3

上面是我的第一堂课,下面是我的第二堂课。我正在尝试在第二堂课中使用第一堂课分配的值。我想在第2类中将两个值加在一起,然后将其添加到新值。

class Class2(Class1):
    def __init__(self,Class1):

        self.arg1 = class1.list1
        self.arg2 = class1.list2
        self.arg3 = class1.list3
        self.arg4 = arg4

def calc(self, Class1):
    for row in Class1.list1:
        self.arg4.append(Class1.list2 + Class1.list3)

callF = Class2(class1).calc(Class1)

当我调用运行此代码时,我得到了错误attributeError:类型对象'class1'没有属性'list1'

2 个答案:

答案 0 :(得分:0)

Class1是一种类型,不是实例。首先创建您的对象的实例。

但是您也有一个问题,因为您希望Class2Class1继承而没有真正使用该继承。

因此,弄清楚您想在一张纸上做什么以及对象之间的相互作用。也许Class2应该具有类型Class1的成员变量。如果是这样,就这样做。

class Class2():
    def __init__(self, c):
        self.arg1 = c.list1
        self.arg2 = c.list2
        self.arg3 = c.list3
        self.arg4 = arg4 # where does this one come from?

    def calc(self, c):
        for row in c.list1:
            self.arg4.append(c.list2 + c.list3)

c = Class1([], [], [])
callF = Class2(c).calc(c)

答案 1 :(得分:0)

您正在从list1中的list2初始化程序访问参数Class1Class2等。 IMO,您应该使用变量arg1arg2arg3来访问它们,如下所示。注意更改self.arg1 = Class1.arg1而不是使用self.arg1 = Class1.list1。我还为return添加了一个arg4语句,并将其初始化为空列表,因为它在您的代码中丢失了。

class Class1:
    def __init__(self, list1, list2, list3):
        self.arg1= list1
        self.arg2= list2
        self.arg3= list3

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)
        return self.arg4    

c1 = Class1([],[],[])            
callF = Class2(c1).calc(c1)

您的代码中也有缩进错误和错别字(小写类名)。