0

リストである外部クラスの引数に項目を追加しようとしていますが、インスタンスを作成する必要があります。しかし、同じクラス インスタンスを使用せずに、そのクラスの引数のインスタンスを作成するにはどうすればよいでしょうか。ここに私がやろうとしていることの小さな例があります

  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
4

2 に答える 2

0

あなたの用語は混乱しています。「クラス引数を呼び出す」ことは私にとって何の意味もありません。

あなたのコードはそのまま壊れています。パラメータリストにはlist1andarg1がありますが、本体で使用します。例では意味のある名前を使用し、実際に実行しているコードと表示される実際のエラー メッセージをカット アンド ペーストしてください。A.__init__arg2

文字列を追加する前に、とをどうしたいAですか? たとえば、 に空のリストを追加し、 にゼロを追加する場合は、次のようにします。list1arg2arg2

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')

最初に、クラスのインスタンスまたはオブジェクトを作成してから、その変数の 1 つに何かを追加する必要があります。したがって、最良の方法は、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シェルでテストする方法は次のとおりです。

>>> arg = A ([],1)
>>> b = B(2,3)
>>> b.method1(arg)
['newitem']
>>> 

まず、クラス A のインスタンスを arg という名前で作成しました。次に、名前が b のクラス B のオブジェクト。最後に、引数 arg を使用して b の method1 を呼び出しました。

于 2013-04-23T02:13:36.900 に答える