1
class game_type(object):
    def __init__(self):
        select_game = raw_input("Do you want to start the game? ")
        if select_game.lower() == "yes":
            player1_title = raw_input("What is Player 1's title? ").lower().title()


class dice_roll(object,game_type):
    current_turn = 1
    current_player = [player1_title,player2_title]
    def __init__(self):
        while game_won == False and p1_playing == True and p2_playing == True: 
            if raw_input("Type 'Roll' to start your turn  %s" %current_player[current_turn]).lower() == "roll":

次のようなエラーが発生し続けます:NameError:name'player1_title' is not defined

タイトルが関数であることを理解しているので、player1_nameとplayer1_unamを使用してみましたが、これらも同じエラーを返しました:(

誰か助けてくれませんか

すべての答えは大歓迎です

4

1 に答える 1

5

NameError の原因はいくつかあります。

1__init__つには、game_type のメソッドはデータを保存しません。インスタンス変数を割り当てるには、クラス インスタンスを で指定する必要がありますself.。そうでない場合は、ローカル変数を割り当てているだけです。

次に、子クラスで新しい関数を作成し、それでも親の効果が必要な場合は、親クラスの__init__関数を明示的に呼び出す必要があります。super()

したがって、基本的に、コードは

# Class names should be CapCamelCase
class Game(object):                                                                
    def __init__(self):                                                    
        select_game = raw_input("Do you want to start the game? ")         
        if select_game.lower() == "yes":                               
            self.player1_title = raw_input("What is Player 1's title? ").lower().title()
            # Maybe you wanted this in DiceRoll?
            self.player2_title = raw_input("What is Player 1's title? ").lower().title()

# If Game were a subclass of something, there would be no need to 
# Declare DiceRoll a subclass of it as well
class DiceRoll(Game):                                                      
    def __init__(self):                                                   
        super(DiceRoll, self).__init__(self)                               
        game_won = False                                                   
        p1_playing = p2_playing = True                                     
        current_turn = 1                                                   
        current_players = [self.player1_title, self.player2_title]    
        while game_won == False and p1_playing == True and p2_playing == True:
            if raw_input("Type 'Roll' to start your turn %s" % current_players[current_turn]).lower() == "roll":
                pass
于 2012-10-21T01:22:13.140 に答える