0

I'm trying to append an item to an argument of an external class which is a list but I need to create an instance. But how do I create an instance to that class's arguments without using that same class instance? here is a little example of what I'm trying to do

  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

What should I do to append that newItem to list1?

I'm sorry if i don't explain myself well. i'm really confused

EDIT (adding my actual code)

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
4

2 回答 2

0

你的术语很混乱;“调用类论点”对我来说没有任何意义。

您的代码按原样损坏;你有list1andarg1A.__init__参数列表中,但你arg2在正文中使用。请在示例中使用有意义的名称,并剪切并粘贴您正在运行的实际代码以及您收到的实际错误消息。

在附加字符串之前,您希望A'list1和是什么?arg2例如,如果您想要一个空列表附加到 并且零arg2,然后执行:

A([],0).list1.append('newitem')
于 2013-04-22T22:46:06.783 回答
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。

于 2013-04-23T02:13:36.900 回答