1

私はイナゴを扱っており、ユーザーの行動を模倣しています。ただし、親クラス変数へのアクセスに問題があります。どうすればそれを渡すことができますか?

class User(TaskSet):
  some_user = ''

  def on_start(self):
    self.get_user()

  def get_user(self):
    some_user = self.client.get...#gets user

  @task
  class UpdatingUser(TaskSet):
    def updating(self):
      path = "/posts/" + User.some_user

User.some_user にたどり着くまでに、ユーザーはいません。

4

2 に答える 2

1

すべてのコードを提供したわけではありませんが、問題は、のようにどこかでインスタンス属性get_user()として設定some_userされている可能性があります。self.some_user = foo

some_userただし、これはその特定のインスタンスUser(Bob、Lisa、Beto、User53 など) に対してのみ設定されますが、Userクラス自体に対しては設定されません。のように でアクセスする場合some_userは、クラスではなく、これらのステートメントを実行している特定のインスタンスに対して設定します。のような特定のインスタンス属性ではなく、クラス属性にアクセスしています。のすべてのインスタンスに対してデフォルトで不変である class 属性を更新するには、 in で設定する必要があります。selfself.some_userupdating() User.some_userusr53.some_userUserUser.some_user = fooget_user()

現在 でpath = "/posts/" + User.some_user、設定されていない可能性のあるクラス属性にアクセスしようとしています。のような入れ子になったクラスは、呼び出しUpdatingUser元の入れ子のクラス ( User)のインスタンスにアクセスできないため、または の他のインスタンス属性を持つセットUpdatingUserにはアクセスできません。したがって、解決策は、前の段落で説明したように、インスタンス属性の代わりにクラス属性を設定することです。some_userselfUserget_user()

于 2015-11-25T06:24:43.260 に答える