![](/img/trans.png)
[英]Is it possible to use __init__ values from a class calling another class?
[英]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是一种类型,不是实例。 首先创建对象的实例。
但是您也有一个问题,因为您希望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)
您正在从Class2
Class1
初始化程序访问参数list1
, list2
等。 IMO,您应该使用变量arg1
, arg2
, arg3
如下访问它们。 注意更改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.