Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我不能连接';str';和';实例';类中的对象?_Python_String_Class_Instance_Init - Fatal编程技术网

Python 为什么我不能连接';str';和';实例';类中的对象?

Python 为什么我不能连接';str';和';实例';类中的对象?,python,string,class,instance,init,Python,String,Class,Instance,Init,上面是我正在构建的代码的过度简化版本,用于从网页中提取数据。我像这样运行temp.py代码 class myClass: def __init__(self, text): self.text = text def printText(text): more_text = "Why so " return more_text + text 但是我得到 class myClass: def _

上面是我正在构建的代码的过度简化版本,用于从网页中提取数据。我像这样运行temp.py代码

class myClass:

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

    def printText(text):
            more_text = "Why so "

            return more_text + text
但是我得到

class myClass:

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

    def printText(text):
            more_text = "Why so "

            return more_text + text
但是我得到

class myClass:

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

    def printText(text):
            more_text = "Why so "

            return more_text + text
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“temp.py”,第9行,打印文本
返回更多文本+文本
TypeError:无法连接'str'和'instance'对象

有人能给我一个解决这个问题的好办法吗?请注意,在我的原始代码中,我的意图是连接类中的两个字符串对象以创建网页链接。任何建议都将不胜感激。

您面临的主要问题是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "temp.py", line 9, in printText
    return more_text + text
TypeError: cannot concatenate 'str' and 'instance' objects
出现此错误的原因是,作为实例方法,声明希望您将
self
(实例对象)作为第一个参数传递。您现在正在传递用作self(实例)的
文本。这就是为什么会出现错误的原因,因为最终您实际要做的是尝试添加带有实例的字符串

因此,知道隐式传递给
printText
的第一个参数就是实例,并且查看方法内部,实际上您希望在
printText
方法内部引用
self.text
。但是,传递到
printText
的实例实际上被称为
text
。这可能非常令人困惑

因此,按照建议的命名法,您应该将实例参数命名为“预期的”,self

记住这一点,您想要引用的
文本
现在可以被引用为
self.text

这可以通过修复代码来显示:

def printText(text):

您面临的主要问题是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "temp.py", line 9, in printText
    return more_text + text
TypeError: cannot concatenate 'str' and 'instance' objects
出现此错误的原因是,作为实例方法,声明希望您将
self
(实例对象)作为第一个参数传递。您现在正在传递用作self(实例)的
文本。这就是为什么会出现错误的原因,因为最终您实际要做的是尝试添加带有实例的字符串

因此,知道隐式传递给
printText
的第一个参数就是实例,并且查看方法内部,实际上您希望在
printText
方法内部引用
self.text
。但是,传递到
printText
的实例实际上被称为
text
。这可能非常令人困惑

因此,按照建议的命名法,您应该将实例参数命名为“预期的”,self

记住这一点,您想要引用的
文本
现在可以被引用为
self.text

这可以通过修复代码来显示:

def printText(text):

这里有几个问题:

在为对象创建的每个函数中,
self
必须包含为第一个参数

使用第二个示例:

def printText(self):
        more_text = "Why so "

        return more_text + self.text
然后,创建类的实例,并可以访问函数
printText

class myClass:

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

    def printText(self, text):
            more_text = "Why so "

            return more_text + text
如果要使用与初始化文本相同的文本,则需要将其作为类的属性引用,而不是作为新参数
text
,如下所示:

joker = myClass("This is some text")
print(joker.text) # This prints: "This is some text"
print(joker.printText("serious?")) # This prints "Why so serious?"
然后,如果要参考上述内容:

class myClass:

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

    def printText(self):
            more_text = "Why so "

            return more_text + self.text

这里有几个问题:

在为对象创建的每个函数中,
self
必须包含为第一个参数

使用第二个示例:

def printText(self):
        more_text = "Why so "

        return more_text + self.text
然后,创建类的实例,并可以访问函数
printText

class myClass:

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

    def printText(self, text):
            more_text = "Why so "

            return more_text + text
如果要使用与初始化文本相同的文本,则需要将其作为类的属性引用,而不是作为新参数
text
,如下所示:

joker = myClass("This is some text")
print(joker.text) # This prints: "This is some text"
print(joker.printText("serious?")) # This prints "Why so serious?"
然后,如果要参考上述内容:

class myClass:

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

    def printText(self):
            more_text = "Why so "

            return more_text + self.text

由于
printText
中的
text
是方法的第一个参数,因此它是*隐式传递给实例的,因此它将不起作用。由于
printText
中的
text
是方法的第一个参数,因此它*隐式传递给实例,因此它将不起作用。注意,OP正在使用
print joker\u says.printText()
,因此将抛出
TypeError
,因为它将缺少一个参数...@juanpa.arrivillaga Shoot。你让我意识到真正的问题是什么。谢谢你提出来。@juanpa.arrivillaga谢谢。我修复了它。注意,OP正在使用
print joker\u says.printText()
,因此将抛出
TypeError
,因为它将缺少一个参数...@juanpa.arrivillaga Shoot。你让我意识到真正的问题是什么。谢谢你提出来。@juanpa.arrivillaga谢谢。我修好了,谢谢!我想我明白了。然而,我认为正如你所指出的,def printText中应该有一个self,而不是text。这样printData就不会寻找两个输入。我感谢你的迅速反应!谢谢我想我明白了。然而,我认为正如你所指出的,def printText中应该有一个self,而不是text。这样printData就不会寻找两个输入。我感谢你的迅速反应!