首页 > 解决方案 > 如何修复“NameError:名称'checker_start'未定义”

问题描述

如何修复这些错误代码

回溯(最近一次通话):文件“/Users/erzajullian/PycharmProjects/Checker/topmail.py”,第 9 行,类 checker_start(object):文件“/Users/erzajullian/PycharmProjects/Checker/topmail.py”,第 16 行,在 checker_start print(checker_start().get_token()) NameError: name 'checker_start' is not defined

这是代码

import requests
from bs4 import BeautifulSoup


class output(object):
    pass


class checker_start(object):
    def get_token(self):
        data = requests.get("https://mail.topmail.com/preview/mail/")
        soup = BeautifulSoup(data.text, "lxml")
        token_1 = soup.find("input", {"name": "form_token"})["value"]
        return token_1

    print(checker_start().get_token())

我的代码有什么问题?

标签: python

解决方案


你的行缩进print(checker_start().get_token())是错误的。您正在尝试实例化类的对象checker_start并在类定义本身的代码块(范围)中调用其方法get_token。因此你得到一个NameError.

Python 中最显着的特性之一是带有缩进的代码块。在 Python 中,缩进代码与风格无关(就像在大多数编程语言中一样),这是一项要求。

在大多数其他编程语言中,缩进仅用于帮助使代码看起来更漂亮。但是在 Python 中,它是用来指示语句属于哪个代码块的。

尝试:

import requests
from bs4 import BeautifulSoup


class output(object):
    pass


class checker_start(object):
    def get_token(self):
        data = requests.get("https://mail.topmail.com/preview/mail/")
        soup = BeautifulSoup(data.text, "lxml")
        token_1 = soup.find("input", {"name": "form_token"})["value"]
        return token_1

# remove the line-indentation
print(checker_start().get_token())

推荐阅读