Задать вопрос

Из-за чего при обращении к полю объекта приходится дважды указывать данное поле?

Только начал учить питон, не могу понять, почему приходится дважды указывать поле объекта, чтобы получить его непосредственное значение. Имеется класс:

class Player:
    choice = ""
 
    # конструктор
    def __init__(self, choice):
        self.choice = choice  

    def defineWinner(self, player):
        anotherPlayer = Player(player)
        if self.choice == anotherPlayer.choice.choice: # TODO почему choice приходится указывать дважды?
            print("nobody wins!")
        elif loserByWinner[self.choice] == anotherPlayer.choice.choice:
            print("player1 wins!")
        else:
            print("player2 wins!")


В нем есть стринговое поле. В методе defineWinner() сравниваю значение choice текущего объекта с тем, который был передан. В первом случае self.choice возвращает то, что нужно - содержимое строки, во втором - <__main__.Player object at 0x01AE0AB0>. И чтобы у переданного объекта также увидеть содержимое строки, приходится писать anotherPlayer.choice.choice. Это особенность представления объектов в питоне или с чем связано такое представление?
  • Вопрос задан
  • 421 просмотр
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы