Когда вы делаете
player = player(...)
, вы пытаетесь создать переменную с именем player
класса player
.
ОднакоПитон не может отличить. В тот момент, когда вы объявляете о своем намерении создать переменную с именем player
, python предполагает, что имя player
будет ссылаться на эту переменную, а не на класс , который также называется player
. Когда вы затем пытаетесь вызвать player
, python запутывается, потому что вы еще ничего не присвоили переменной.
По соглашению (и вы даже можете видеть это в цветах каждого слова ниже)мы обычно называем классы заглавными буквами, чтобы избежать этой ситуации:
class Player:
...
...
def create():
player = Player(...)
, потому что player
и Player
- это не одно и то же слово, в python больше нет путаницы.