python - 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'
我搜索了几个小时,我认为这是非常基本的,但我找不到任何解决方案。
解决方案
在下面的代码中,您正在调用,User.login()
但在您的方法定义中,您有def login(self, username, password)
. 您需要将参数传递username
给.password
User.login()
choice = int(input("1-Login 2-Register"))
if choice == 1:
User.login()
elif choice ==2:
User.register()
推荐阅读
- android - 将 Android 项目编译到移动设备“Pixel”时出现问题
- installation - 首次登录导致“加载中......”
- php - 没有php日志
- git - 如何对序列中的所有提交应用相同的转换,而无需手动完成每个?
- vue.js - 设置 axios 授权头依赖于 store 的变化
- json - Html5: {{data}} 放置在来自 json 文件的文本中间
- regex - 匹配 n 次后使用正则表达式反向引用
- sql - 根据 SQL 中两行的条件返回单个结果
- java - 使用 Spring SpelExpressionParser 进行数学字符串计算 - 值太大
- javascript - 使用 javascript 和 glsl 进行凹凸映射