47748


pythonのselfについて使い方をお尋ねしたいのですが

[code]

    class Game:
        def __init__(self):
            self.p1 = Player("name1")
            self.p2 = Player("name2")
    
    
    class Player:
        def __init__(self, name):
            self.wins = 0
            self.card = None
            self.name = name
    
[/code]

別のクラス内にて

[code]

    self.p1.wins += 1
    self.p2.wins += 1
    
[/code]

このようにp1のwinsのように繋げて使用できるのでしょうか？  
これは新しく変数を作らなくて便利だと思うのですがそのような使い方で合っているとでしょうか？


CC BY-SA 4.0
2018-08-23T02:22:53.957
47742
2018-08-23T07:35:45.837
2018-08-23T04:21:40.430
-1
22565
question
python python3
pythonのselfの使い方について


可能です。例えば、以下のようなコードで `Game with P1(user1): 1wins, P2(user2): 0wins`
というような結果を得られます。

[code]

    class Game:
        def __init__(self):
            self.p1 = Player('user1')
            self.p2 = Player('user2')
    
        def __str__(self):
            return "Game with P1({p1_name}): {p1_wins}wins, P2({p2_name}): {p2_wins}wins".format(
                p1_name=self.p1.name,
                p2_name=self.p2.name,
                p1_wins=self.p1.wins,
                p2_wins=self.p2.wins,
            )
    
    
    class Player:
        def __init__(self, name):
            self.wins = 0
            self.card = None
            self.name = name
    
    
    def main():
        game = Game()
        game.p1.wins += 1
        print(game)
    
    
    if __name__ == '__main__':
        main()
    
[/code]


CC BY-SA 4.0
2018-08-23T03:22:33.620
47748
2018-08-23T07:35:45.837
2018-08-23T07:35:45.837
29826
29826
47742
answer