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/