TypeError:gettext()缺少1个必需的位置参数:“self”python

2024-09-22 16:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,我正在尝试为一个模块创建一个类,该模块检查文本中的诅咒。 有人能帮忙吗?在

import urllib

class Checktext:

    def __init__(self, text):
        self.text = text

    def gettext(self):
        file = open(self.text, "r")
        filetext = open.read()
        for word in filetext.split():
            openurl = urllib.request.urlopen("http://www.wdylike.appspot.com/?q=" + word)
            output = openurl.read()
            truer = "true" in str(output)
            print(truer)

s = Checktext(r"C:\Users\Tzach\.atom\Test\Training\readme.txt") 
Checktext.gettext()

Tags: 模块textinselfreadoutputdefopen
2条回答

urllib是一个包。您必须导入位于包中的模块request

import urllib.request

{return文件}。要调用该对象的方法:

^{pr2}$

正如G.Anderson所写,你需要调用s.gettext(),而不是{}。里面的self实际上等于外面的s。如果你想变得怪异,那么你还可以使用:

^{3}$

请注意,s作为您的缺少的参数传递。这里Python实际上揭示了面向对象的东西是如何在内部实现的。在大多数OO语言中,它被小心地隐藏起来,但是调用一个对象的方法总是在内部被翻译为传递一个指向类的实例的特殊参数,即对象。在定义Python方法时,这个特殊参数显式命名为self(按照惯例;您可以用不同的名称来命名,您可以尝试将其作为讲座,但您应该始终保持该约定)。在

仔细考虑一下,您可以得到OO语言语法隐藏魔力的关键思想。类(对象)的实例实际上只是存储数据部分的内存的一部分,并传递给实现方法的函数。Checktext.gettext实际上是函数,s是对象。实际上,s.gettext()只是表达完全相同的另一种方式。由于sChecktext类的实例,因此事实存储在s中。因此,s.gettext()产生了一种错觉,即正确的代码将被神奇地称为。如果^{被认为是一种有形的东西,那么它比功能方法更适合训练有素的大脑。在

您将s声明为新的Checktext对象,因此需要调用s.gettext(),而不是未实例化的{},因为它没有{}来引用

相关问题 更多 >