Programmierstyl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Domroon
User
Beiträge: 104
Registriert: Dienstag 3. November 2020, 10:27
Wohnort: Dortmund

@__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()

narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@Domroon: Was ist der Unterschied zwischen `self._password` und `self.password`?
Benutzeravatar
Domroon
User
Beiträge: 104
Registriert: Dienstag 3. November 2020, 10:27
Wohnort: Dortmund

@narpfel: Aaah okay, habs geändert, jetzt funktioniert es genauso wie ich es mir vorgestellt habe, vielen Dank ;)
Antworten