Ich bin ein „Spieler“ Modul mit den foliowing Umsetzung:Fehlermeldung: Objekt enthält kein Attribut, wenn die Objekt-Attribut enthält
- eine Validierungsfunktion
- ein Spielerobjekt mit Benutzername und Passwort Attribute
- ein Passwort ändern Methode für Spieler
Wenn die folgenden change_password
Methode ausgeführt wird, erhalte ich eine Fehlermeldung:
while(old_password!=self.password_str):
AttributeError: 'Player' object has no attribute 'password_str'
Noch definiere ich password_str
als Attribut Player
. Irgendwelche Ideen was passiert?
class Player(object):
def __init__(self, username_str="-", password_str=""):
while (not validated(password_str)):
self.password_str=input("Password is invalid. Please try again:")
self.username=username_str
def change_password(self,old_password):
MAX_ATTEMPT=3
num_of_fails=0
while(old_password!=self.password_str):
num_of_fails+=1
if(num_of_fails<MAX_ATTEMPT):
old_password=input("Thej passwword entered is invalid. Please try again. \
(You have "+str(MAX_ATTEMPT-num_of_fails)+" attempts reamining)")
else:
print("Incorrect password entered too many times. Your account is temporarily locked.")
break
if(num_of_fails<MAX_ATTEMPT):
new_password=input("please enter a new password.")
while(not validated(new_password)):
new_password=input("New password is invalid. Please try again")
self.password_str=new_password
print("Password has been successfully changed!")
Bitte beheben Sie den Einzug in Ihrer Frage. Bitte fügen Sie auch ein Leerzeichen vor und nach '=' und '! =' Hinzu. Ihr Code ist sehr schwer zu lesen, wenn alles zusammengebrochen ist. – roganjosh
Wenn du deinen Player initialisierst, wenn die Passwort-Zeichenfolge, die an __init__ übergeben wird, gültig ist, gehst du nicht in die while-Schleife, in der 'self.password_str' zugewiesen wird, also hat Player bei der Eingabe' 'kein' password_str' Änderungskennwort'. –
Könnte ein Problem mit der 'valided()' Funktion sein, die Sie nicht anzeigen. – martineau