我试图将一个项目附加到一个外部类的参数中,这个外部类是一个列表,但我需要创建一个实例。但是如何在不使用同一类实例的情况下为该类的参数创建一个实例呢?下面是我想要做的一个小例子
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发布于 2013-04-23 06:46:07
您的术语很混乱;“调用类参数”对我没有任何意义。
您的代码被破坏了;您在A.__init__参数列表中有list1和arg1,但是在主体中使用了arg2。请在示例中使用有意义的名称,并剪切和粘贴您正在运行的实际代码,以及您得到的实际错误消息。
在附加字符串之前,您希望A的list1和arg2是什么?例如,如果您希望追加一个空列表,arg2的值为零,则执行以下操作:
A([],0).list1.append('newitem')发布于 2013-04-23 10:13:37
我正在试着理解你的代码。这部分应该删除,因为它没有任何意义:
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。
https://stackoverflow.com/questions/16157228
复制相似问题