python - 为什么我不能连接这些?

标签 python python-2.7

 class Pet:

def __init__(self, name, age):
    self.name = name
    self.age = age

def talk(self):
    raise NotImplementedError("Subclass must implement abstract method")

class Cat(Pet):

def __init__(self, name, age):
    Pet.__init__(self, name, age)

def talk(self):
    return "Meowww"

class Dog(Pet):

    def __init__(self, name, age):
        Pet.__init__(self, name, age)

    def talk(self):
        return "Woof"

def main ():

    pets = [Cat("Jess",3),Dog("Riker",2),Cat("Fred",7),Pet("thePet",5)]

    for pet in pets:
        print "Name: " + pet.name + "Age: " + str(pet.age) + ", says: " + pet.talk

    print jess.name

if __name__ == "__main__":
    main()


Traceback (most recent call last):
File "pets.py", line 36, in <module
main()
File "pets.py", line 31, in main
    print "Name: " + pet.name + "Age: " + str(pet.age) + ", says: " + pet.talk
TypeError: cannot concatenate 'str' and 'instancemethod' objects

好吧,我希望粘贴正确。我知道我需要将类型 int 转换为 str,但我不知道为什么它不能与“实例方法”连接。我四处搜索,大多数其他帖子都涉及将 int 转换为 str 或任何简单的格式错误。我在 Youtube 上关注这个教程,我一遍又一遍地查看它,我很确定我的代码格式正确并且与教程匹配。也许我只是遗漏了一些明显的东西,真的很感激另一双眼睛在这只眼睛上。

最佳答案

您必须将它与该方法的结果(返回值)连接起来。你如何得到这个结果?您必须调用在 (...) 中传递参数的方法。例如:

print "Name: " + ... + pet.talk()

关于python - 为什么我不能连接这些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961683/

相关文章:

python - Tkinter 菜单删除项目

python - 我如何从一些 python 脚本中调用函数,这些函数的名称可以在另一个 python 脚本中更改?

visual-studio - 错误 "**We didn' t 在运行代码时在 VS 中找到任何解释器**”

Python数据上传错误

python - 如何为django modelform字段设置动态初始值

python - 将值从 python 脚本返回到 R 并将这些值存储在 `R` 中

python - 如何在Python中调整gensim `LdaMulticore`的参数

python - 以更 Pythonic 的方式修改这个简单的数组创建函数

python - 如何在Python中通过动态传递 'value'来获取 'enum member name'?

java - python 的打印导致 ProcessBuilder Java 中出现错误