首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python面向对象编程基本登录系统返回TypeError

Python面向对象编程基本登录系统返回TypeError
EN

Stack Overflow用户
提问于 2020-05-14 03:58:45
回答 3查看 1.6K关注 0票数 0

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

所以我定义了我想做的类和函数:

代码语言:javascript
复制
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")

其次,添加了使用这些函数的简单代码:

代码语言:javascript
复制
choice = int(input("1-Login  2-Register"))
if choice == 1:
    User.login()
elif choice == 2:
    User.register()

当我运行这段代码时,我得到了这个错误:

代码语言:javascript
复制
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'

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

EN

回答 3

Stack Overflow用户

发布于 2020-05-14 04:07:45

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

代码语言:javascript
复制
choice = int(input("1-Login  2-Register"))
if choice == 1:     
    User.login()
elif choice ==2:
    User.register()
票数 0
EN

Stack Overflow用户

发布于 2020-05-14 04:10:00

您的登录函数需要两个参数。您没有提供任何内容。你需要这样的东西:

代码语言:javascript
复制
""" declared some instance of a User as my_user somewhere else in the code """

username = 'some username'
password = 'password'

my_user.login(username, password)
票数 0
EN

Stack Overflow用户

发布于 2021-10-04 13:16:50

为了使你的代码有用,你应该使用你的属性(用户名,密码等)。作为私有属性的 by:

代码语言:javascript
复制
self.nameProperty = nameProperty
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61783738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档