如何修复“ NameError:未定义名称'checker_start'”

时间:2019-04-17 09:18:00

标签: python

如何修复这些错误代码

  

回溯(最近通话最近):文件   “ /Users/erzajullian/PycharmProjects/Checker/topmail.py”,第9行,在          class checker_start(object):文件“ /Users/erzajullian/PycharmProjects/Checker/topmail.py”,第16行   checker_start       print(checker_start()。get_token())NameError:名称'checker_start'未定义

这是代码

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())

我的代码怎么了?

2 个答案:

答案 0 :(得分:3)

您的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())

答案 1 :(得分:1)

您的最后一行print(checker_start().get_token())缩进了一个级别,可能不应该缩进一个级别。