@Sirius3: evtl. habe ich mich unklar ausgedrückt, es wäre schön wenn der nachfolgende Code funktionieren würde. Ich setze hier vorraus, dass ein User-Objekt immer mit einem Passwort initialisiert werden muss. Das ist das was ich haben möchte. Es ist jetzt nur nicht so toll, dass die password-setter methode garnicht benutzt wird sondern direkt das passwort ohne überpürfung in das password-attribut geschrieben wird. Denn "asdf" als passwort einzuspeichern sollte ja garnicht klappen und es müsste doch ein Value-Error geworfen werden. Gibt es eine Möglichkeit meinen Wunsch umzusetzen oder stehe ich gerade einfach völlig auf dem Schlauch? Danke euch schonmal
Hier die wichtigen Codezeilen:
Code: Alles auswählen
class User:
def __init__(self, name, password):
self.score = 0
self.name = name
self._password = password
self._choice = "nothing"
def add_point(self):
self.score += 1
@property
def choice(self):
return self._choice
@choice.setter
def choice(self, move):
if move not in POSSIBLE_MOVES:
raise ValueError(f'You can choose between {" / ".join(POSSIBLE_MOVES)}')
self._choice = move
@property
def password(self):
return self._password
@password.setter
def password(self, password):
# password needs:
# letter in upper and lower case
# at least one special sign
# at least one number
if len(password) >= 8:
self._password = password
else:
raise ValueError("Password needs at least 8 character")
def test():
try:
user = User("Max", "asdf")
except ValueError as err:
print(err)
# if user.password is None:
# print("User password is incorrect")
# else:
# print("You can use this password")
def main():
test()
# print('Welcome to the Game "Rock, Paper or Scissor!"')
# name = input("Name: ")
# print(f"Hello {name}! Lets start the Game!")
# user = User(name)
# computer = Computer()
# game = Game(user, computer)
# while user.score < MAX_SCORE and computer.score < MAX_SCORE:
# game.round()
# print("Thank you for gaming!")
if __name__ == '__main__':
main()