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'
答案 0 :(得分:0)
Class1是一种类型,不是实例。首先创建您的对象的实例。
但是您也有一个问题,因为您希望Class2
从Class1
继承而没有真正使用该继承。
因此,弄清楚您想在一张纸上做什么以及对象之间的相互作用。也许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
初始化程序访问参数Class1
,Class2
等。 IMO,您应该使用变量arg1
,arg2
,arg3
来访问它们,如下所示。注意更改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)
您的代码中也有缩进错误和错别字(小写类名)。