我正在尝试将一个项附加到外部类的参数,这是一个列表,但我需要创建一个实例。但是如何在不使用同一个类实例的情况下为该类的参数创建实例?这是我正在尝试做的一个小例子
class A(object):
def __init__(self, list1, arg1)
self.list1 = list1
self.arg1 = arg1
class B(object):
def __init__(self, arg2, arg3)
self.arg2 = arg2
self.arg3 = arg3
def method1(self, arg4)
self.arg4 = arg4
if 0 < 1:
A(A.list1, A.arg1).list1.append('newitem')
return list1
如何将newItem附加到list1?
如果我不能很好地解释自己,我很抱歉。我真的很困惑
编辑(添加我的实际代码)
class SimpleVirus(object):
def __init__(self, maxBirthProb, clearProb):
self.maxBirthProb = maxBirthProb
self.clearProb = clearProb
def reproduce(self, popDensity):
self.popDensity = popDensity
reproduceProb = self.getMaxBirthProb() * (1 - popDensity)
child = SimpleVirus(self.getMaxBirthProb(), self.getClearProb())
VirusL = Patient.getVirusesList()
if random.random() <= reproduceProb:
#Down here is where I need to append to the "viruses" list
Patient(viruses, maxPop).viruses.append(child)
return child
else:
raise NoChildException()
class Patient(object):
def __init__(self, viruses, maxPop): #viruses is a list
self.viruses = viruses
self.maxPop = maxPop
答案 0 :(得分:0)
你的术语很混乱; “召集阶级论证”对我来说没有任何意义。
您的代码已按原样分解;您在list1
参数列表中有arg1
和A.__init__
,但在正文中使用了arg2
。请在示例中使用有意义的名称,并剪切并粘贴您正在运行的实际代码,以及您获得的实际错误消息。
您希望A
的{{1}}和list1
在追加字符串之前是什么?例如,如果您想要一个空列表追加到arg2
的零,那么请执行以下操作:
arg2
答案 1 :(得分:0)
我想了解你的代码。应删除此部分,因为它没有任何意义:
self.arg4 = arg4
仅在 init 方法中定义和初始化类变量。这里arg4是你的方法的输入,你只能通过它的名字来引用它,所以不需要那条线。
这部分也有问题:
A(A.list1, A.arg1).list1.append('newitem')
首先,您必须创建该类的实例或对象,然后才将其添加到其中一个变量中。所以最好的方法是假设arg4是A类的一个实例:
class A(object):
def __init__(self, list1, arg1):
self.list1 = list1
self.arg1 = arg1
class B(object):
def __init__(self, arg2, arg3):
self.arg2 = arg2
self.arg3 = arg3
def method1(self, arg4):
if 0 < 1:
arg4.list1.append('newitem')
return arg4.list1
以下是如何在python shell中测试它的方法。
>>> arg = A ([],1)
>>> b = B(2,3)
>>> b.method1(arg)
['newitem']
>>>
首先,我创建了一个名为arg的A类实例。然后是B类的一个名为b的对象。最后我调用了b的method1,其参数为arg。