Почему with code не впускает меня, даже если у меня правильный пароль?

#python-3.x

#python-3.x

Вопрос:

Я ввожу пароль и имя пользователя для входа в систему. Я создал ООП (объектно-ориентированное программирование), чтобы сделать это, но это не даст мне правильного результата.

Дополнительная информация в коде.

 class Login:
    def __init__(self, uid, password):
        self.uid = "admin"
        self.password = "admin"

    def authenticate(self):
        if self.uid == logid and self.password == logpass:
            print("Login successful")
        else:
            print("Sorry, that was incorrect.")

login = Login("carolynlikesmath", "pass")
logid = input("Enter your user ID: ")
logpass = input("Enter your password: ")

login.authenticate()
  

Комментарии:

1. Должен ли пароль быть «admin» или «pass»?

2. Вы делаете self.uid = "admin" , поэтому все, что вы передаете Login() , игнорируется , а uid в классе установлено значение "uid" .

Ответ №1:

вам нужно передать свои переменные в class

 class Login:
    def __init__(self, uid, password):
        self.uid = "admin"
        self.password = "admin"

    def authenticate(self,logid ,logpass):
        if self.uid == logid and self.password == logpass:
            print("Login successful")
        else:
            print("Sorry, that was incorrect.")

login = Login("carolynlikesmath", "pass")
logid = input("Enter your user ID: ")
logpass = input("Enter your password: ")

login.authenticate(logid ,logpass )
  

Ответ №2:

Ваш __init__ метод игнорирует uid / password , передаваемый ему. Это просто настройка self.uid и self.password оба параметра на «admin», независимо от того, что вы передаете при создании Login() объекта.

Если вам нужны значения «по умолчанию» для этих параметров, задайте их в самой сигнатуре метода.

Кроме того, authenticate() понятия не имеет о переменных logid / logpass . Они находятся за пределами класса. Вам нужно передать их authenticate() для проверки.

 class Login:
    def __init__(self, uid="admin", password="admin"):
        self.uid = uid
        self.password = password

    def authenticate(self, logid, logpass):
        if self.uid == logid and self.password == logpass:
            print("Login successful")
        else:
            print("Sorry, that was incorrect.")

login = Login("carolynlikesmath", "pass")

logid = input("Enter your user ID: ")
logpass = input("Enter your password: ")

login.authenticate(logid, logpass)