Python 3.x 即使我有正确的密码,为什么with code不允许我进入?

Python 3.x 即使我有正确的密码,为什么with code不允许我进入?,python-3.x,Python 3.x,我正在做一个密码和用户名登录的东西。我已经用OOP(面向对象编程)来实现这一点,但它不会给我正确的结果 更多信息在代码中 class Login: def __init__(self, uid, password): self.uid = "admin" self.password = "admin" def authenticate(self): if self.uid == logid

我正在做一个密码和用户名登录的东西。我已经用OOP(面向对象编程)来实现这一点,但它不会给我正确的结果

更多信息在代码中

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

您需要将变量传递给类

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 )

您需要将变量传递给类

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 )

您的
\uuuu init\uuuu
方法正在忽略传递给它的
uid
/
密码。它只是将
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)

您的
\uuuu init\uuuu
方法正在忽略传递给它的
uid
/
密码。它只是将
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)

密码应该是“admin”还是“pass”?您正在执行的是
self.uid=“admin”
,因此无论您向
Login()
传递什么,都将被忽略,并且类中的
uid
设置为
“uid”
。密码应该是“admin”还是“pass”?您正在执行的是
self.uid=“admin”
,因此,将忽略传递给
Login()
的任何内容,并将类中的
uid
设置为
“uid”