Seite 2 von 2

Re: Programmierstyl

Verfasst: Samstag 7. November 2020, 14:26
von Domroon
@__blackjack__: Danke für den Hinweis ;)

@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? :D 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()


Re: Programmierstyl

Verfasst: Samstag 7. November 2020, 14:28
von narpfel
@Domroon: Was ist der Unterschied zwischen `self._password` und `self.password`?

Re: Programmierstyl

Verfasst: Samstag 7. November 2020, 14:43
von Domroon
@narpfel: Aaah okay, habs geändert, jetzt funktioniert es genauso wie ich es mir vorgestellt habe, vielen Dank ;)