首页 > 解决方案 > Python面向对象编程基本登录系统返回TypeError

问题描述

我试图制作一个基本的登录系统,可以登录或注册用户并将信息存储在文本文件中。然而,作为一个初学者,我面临着一个我找不到任何解决方案的问题。

所以我定义了我想要制作的类和函数:

class User():
    def __init__(self, username, password, email):
        self.username = username
        self.password = password
        self.email = email

    def login(self, username, password):
        self.username = input("Enter username: ")
        self.password = input("Enter password: ")
        with open("register.txt", "r", encoding=utf-8) as file:
            if username == username and password == password:
                print("login successful!")

    def register(self, username, password, email):
        self.username = input("Enter username: ")
        self.password = input("Enter password: ")
        self.pass_check = input("Enter password: ")
        self.email = input("Enter email: ")

        if password == pass_check:
            print("Password match, you can login")
            with open("register.txt", "a", encoding=utf-8) as file:
                file.write('Username:', username+' ', 'Password:',
                           password+' ', 'email:', email)
        else:
            print("passwords don't match")

其次添加了使用这些功能的简单代码:

choice = int(input("1-Login  2-Register"))
if choice == 1:
    User.login()
elif choice == 2:
    User.register()

当我运行此代码时,我收到此错误:

Traceback(most recent call last):
  File "c:/Users/ASUS/Desktop/Python Projects/login-oop.py", line 32, in <module > User.login()
TypeError: login() missing 3 required positional arguments: 'self', 'username', and 'password'

我搜索了几个小时,我认为这是非常基本的,但我找不到任何解决方案。

标签: pythonfileclassoopauthentication

解决方案


在下面的代码中,您正在调用,User.login()但在您的方法定义中,您有def login(self, username, password). 您需要将参数传递username给.passwordUser.login()

choice = int(input("1-Login  2-Register"))
if choice == 1:     
    User.login()
elif choice ==2:
    User.register()

推荐阅读