Python'da OOP öğreniyorum ve bu küçük oyunu OOP stilinde çalıştırmaya çalışıyordum, ancak bazı nedenlerden dolayı sistem nesnenin özelliklerini bulamıyor. piton 3'te bu kodun üzerindeTahmin numarası, böyle bir özellik yok, python 3
Traceback (most recent call last): File "HelloUsername.py", line 47, in <module> newGameGTN = GuessTheNumber() File "HelloUsername.py", line 6, in __init__ self.start_game() File "HelloUsername.py", line 32, in start_game player = player_choice() NameError: name 'player_choice' is not defined
:
from random import randint
class GuessTheNumber(object):
"""docstring for GuessTheNumber"""
def __init__(self):
self.start_game()
self.player_choice()
self.compare_numbers()
def player_choice(self):
choice = int(input("Choose your number: "))
if choice in range(101):
return(choice)
else:
print("Please enter a number 0-100")
player_choice()
def compare_numbers(self, computer, player):
if player == computer:
return(0)
elif player > computer:
return(1)
elif player < computer:
return(-1)
def start_game(self):
computer = randint(0, 100)
turn = 0
for turn in range(3):
player = player_choice()
x = compare_numbers(computer, player)
print(computer)
if x == -1:
print("too small")
elif x == 1:
print("too big")
elif x == 0:
print("you win")
break
turn += 1
print("game over")
newGameGTN = GuessTheNumber()
newGameGTN.start_game()
'player_choice' ve' compare_numbers' işlevleri * sınıfın içinde * olduğundan, bunlar 'self' nesnesi aracılığıyla dahili olarak geçirilir. Bu nedenle, 'self.player_choice()' işlevini çağırmak – jDo
çalışmalıdır 'classmethod' veya' staticmethod' kullanmak isteyebilirsiniz çünkü bu yöntem için nesne gerçekten gerekli değildir, [bu yanıt] 'a bakabilirsiniz (http: // nasıl çalıştığına ilişkin bir açıklama için stackoverflow.com/questions/36076506/python3-nameerror-name-method-is-not-defined/36088022#36088022) ancak jDo tam olarak aldık: 'self.player_choice() işlevini çağırmanız gerekir. bunun yerine sadece player_choice() ' –
Bunun yerine Sublime Text ile ne ilgisi var? Sorun editörün kendisi değilse, lütfen metin düzenleyicinizi etiketlemeyin. – MattDMo