Только начал учить питон, не могу понять, почему приходится дважды указывать поле объекта, чтобы получить его непосредственное значение. Имеется класс:
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. Это особенность представления объектов в питоне или с чем связано такое представление?