2016-11-13 5 views
1

こんにちは私はクラスのリストを反復しようとするといくつかの問題を抱えています。それは何も印刷されません、私はまた、forループで "player.playerのプレイリスト"を持ってみましたが、私は同じresult.Anyヘルプが大いに感謝されるだろう。Pythonはクラスオブジェクトのリストを反復処理し、値を抽出します

私の主な機能

class main: 

if __name__ == '__main__': 

    while True: 

     print("Please Select An Option Below:") 
     print("1 - Create Player:") 
     print("2 - List Players:") 
     print("3 - Create Team:") 
     print("4 - Sell Player:") 
     print("5 - Buy Player:") 
     x = raw_input("Please select a option: \n") 

     playerList = [] 

     if(x == '1'): 

      import Player 
      p1 = Player.player() 
      pname = raw_input("Please Enter A Player Name \n") 
      page = raw_input("Please Enter A Player Age \n") 
      pwage = raw_input("Please Enter A Player Wage \n") 
      pteam = raw_input("Please Enter A Player Team \n") 
      p1.pname = pname 
      p1.page = page 
      p1.pwage = pwage 
      p1.pteam = pteam 
      playerList.append(p1) 
      continue 

     if(x == '2'): 
      for p1 in playerList: 
       print(p1.pname) 
      continue 

マイプレイヤークラス

class player(object): 

    @property 
    def pname(self): 
     return self.pname 

    @pname.setter 
    def pname (self, value): 
     pass 

    @property 
    def page(self): 
     return self.page 

    @page.setter 
    def page (self, value): 
     pass 

    @property 
    def pwage(self): 
     return self.pwage 

    @pwage.setter 
    def pwage(self, value): 
     pass 

    @property 
    def pteam(self): 
     return self.pteam 

    @pteam.setter 
    def pteam(self, value): 
     pass 

----更新-----

class main: 

    if __name__ == '__main__': 

     while True: 

      print("Please Select An Option Below:") 
      print("1 - Create Player:") 
      print("2 - List Players:") 
      print("3 - Create Team:") 
      print("4 - Sell Player:") 
      print("5 - Buy Player:") 
      x = raw_input("Please select a option: \n") 

      playerList = [] 

      if(x == '1'): 

       import Player 
       nplayer = Player.player() 
       nplayer.set_name(raw_input("test\n")) 
       playerList.append(nplayer) 
       continue 

      if(x == '2'): 
       for player in playerList: 
        print(player.get_name) 
       continue 

class player(object): 

    __name = "" 

    @property 
    def get_name(self): 
     return self.__name 

    def set_name(self, name): 
     self.__name = name 
+1

インデントを修正してください。 'class main:' –

+1

のため、あなたはグローバルスコープで何も実行していないようですので、あなたのセッターは空です。これは正常ですか? –

+0

メニューを表示するたびに、playerListを空のリストに初期化します。したがって、追加されたプレイヤーは、それを印刷する前に破棄することになります。 – jasonharper

答えて

0

あなたはセッターが呼ばれp1.pname = pnameを書きます。しかし、あなたはセッターで何もしません。だからゲッターが後で呼び出されるとき、それは何も返さない。 pythonで動作するようにゲッターとセッターのために、あなたはこのような何かをする必要があり

:語ったように私の問題を適切にセッター/ゲッターを設定しないことによって引き起こされたそれを助けた人に

class player(object): 
    @property 
    def pname(self): 
     return self._pname 

    @pname.setter 
    def pname (self, value): 
     self._pname = value 
+0

お返事ありがとうございます、私はあなたの提案した変更を反映するために自分のコードを更新しました(最初の記事の更新されたコードを参照してください)/getterでも、クラスの特定の属性を出力する "forループ"は得られません(この場合、プレーヤー名) – AlasdairRyan

0

多くのおかげで上と私は表示メニューオプションでクラスのインスタンスを別のリストに送信させる配列を持っています。

class main: 

if __name__ == '__main__': 

    playerList = [] 

    while True: 

     print("Please Select An Option Below:") 
     print("1 - Create Player:") 
     print("2 - List Players:") 
     print("3 - Create Team:") 
     print("4 - Sell Player:") 
     print("5 - Buy Player:") 
     x = raw_input("Please select a option: \n") 

     if(x == '1'): 

      import Player 
      nplayer = Player.player() 
      nplayer.set_name(raw_input("Please Enter A Name\n")) 
      playerList.append(nplayer) 
      continue 

     if(x == '2'): 
      for nplayer in playerList: 
       print(nplayer.get_name) 
      continue 

class player(object): 

__name = "" 

@property 
def get_name(self): 
    return self.__name 

def set_name(self, name): 
    self.__name = name 
関連する問題