Я программирую игру Блэк Джек в ноутбуке Jupyter, для этого у меня есть класс «игрок» и «дилер», а также функция (BlackJack ()), которая в основном запускает всю игру.
def BlackJack():
name = input("What is your name: ")
while True:
try:
money = int(input(f"Welcome to our casino Black Jack game {name}!How big is your balance in € : "))
except ValueError:
print("Just give me a number: ")
else:
print("Ok, let's start!")
break
player = player(name, money) # player() class
dealer = dealer() # dealer() class
При попытке создать объекты класса с тем же именем, что и у самого класса, возникает ошибка:
Сообщение об ошибке:
What is your name: "Richard"
Welcome to our casino Black Jack game "Richard"!How big is your balance in € : 19163
Ok, let's start!
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-55-3c92f609e237> in <module>
----> 1 BlackJack()
<ipython-input-54-57fc63786581> in BlackJack()
9 print("Ok, let's start!")
10 break
---> 11 player = player(name, money)
12 dealer = dealer()
UnboundLocalError: local variable 'player' referenced before assignment
Но если я называю объекты класса разными или я называю их одинаковыми, но вне функции ошибка отсутствует:
def BlackJack():
name = input("What is your name: ")
while True:
try:
money = int(input(f"Welcome to our casino Black Jack game {name}!How big is your balance in € : "))
except ValueError:
print("Just give me a number: ")
else:
print("Ok, Let's Start!")
break
plyr = player(name, money)
dlr = dealer()
или
player = player("Jimmy", 1200)
Это только потому, что в функции Python считает, что я хочу присвоить себе переменную еще до того, как назначу переменную (дилер = дилер ()), даже если они на самом деле не совпадают, потому что один является переменной, а другой является классом? Так что Python в этом случае просто игнорирует тот факт, что, например, дилер () является классом вместо переменной "дилер"?
Заранее спасибо!
PS: пользуюсь Python 3.7.4