繁体   English   中英

使用另一个类的__init__值

[英]Using __init__ values from another class

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”

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)

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

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM