TypeError: gettext() 缺少 1 个必需的位置参数: 'self' - 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:UsersTzach.atomTestTrainingreadme.txt") 
Checktext.gettext()

您将 s声明为新的coottext对象,因此您需要调用s.gettext()而不是未经证实的Checktext.gettext(),因为它没有self可以参考

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

import urllib.request

open(filename)返回文件对象。您想调用该对象的方法:

filetext = file.read()

和G. Anderson所写,您要调用s.gettext()而不是Checktext.gettext()。内部self实际上等于外部的s。如果您想成为怪异,那么您实际上也可以使用:

Checktext.gettext(s)

请注意,s以您的缺失参数传递。在这里,Python实际上揭示了如何在内部实现面向对象的事物。在大多数OO语言中,它是仔细隐藏的,但是呼叫对象的方法总是被内部翻译为传递一个指向班级的实例的更多特殊参数,那就是对象。在定义Python方法时,该特殊论点被明确命名为self(按照惯例;您可以以不同的方式命名 - 您可以尝试作为讲座,但是您应该始终始终保持该约定)。

彻底考虑一下,您可以获得OO语言语法隐藏魔法的关键思想。类(对象)的实例实际上只是存储数据部分的内存的一部分,并且传递给实现方法的函数。Checktext.gettext实际上是功能,s是对象。s.gettext()实际上只是表达完全相同的不同方法。由于sChecktext类的实例,因此该事实存储在s中。因此,s.gettext()产生了一种幻觉,即rigth代码将被称为魔法。如果s被认为是有形的东西,它比训练有素的大脑要比训练有素的大脑更好。

最新更新