首页 > 解决方案 > 类型错误:check() 缺少 1 个必需的位置参数:'self'

问题描述

我尝试使用 re 编写代码将我的邮件存储在一个文件中,并在启动时检查它是否在该文件中,否则要求我再次输入

我尝试将 self 放在第 28 行的函数名之前(错误)

import re

class login(object):
    def check(self):
        self.mail = r"([\w\.-]+)@([\w\.-]+)([\w\.-]+)"
        with open('login.txt', 'r') as self.myfile:
            self.line1 = self.myfile.read().replace('\n', '')
        with open('username.txt', 'r') as self.usr:
            self.line2 = self.usr.read().replace('\n', '')
        if re.findall(self.mail, self.line1):
            goon()
        else:
            log()
        self.myfile.close()

    def goon(self):
        import assistant #another code to exec.

    def log(self):
        self.file = open("login.txt", "w")
        self.file.truncate(0)
        self.data = input("Your email: ")
        self.file.write(self.data)
        self.file.close()
        l.goon()

    if __name__ == '__main__':
        check() #error
        log()
        goon()

标签: pythonpython-3.x

解决方案


你得到这个错误的直接原因是你缩进了你的“主”程序,并使它成为类的方法。

将其拉回左边距。然后,要使用类代码,您必须创建类的实例。这是self每个方法调用的隐式参数。

if __name__ == '__main__':
    obj = login()
    obj.check() #error
    obj.log()
    obj.goon()

推荐阅读