调用方法将返回

问题描述 投票:0回答:1

我正在阅读基于Web的python教程,下面的代码在该类提供的Web环境中执行。

但是,当我尝试在Anaconda中本地运行代码时,得到以下结果:

I'm Fido. I feel <bound method Pet.mood of <__main__.Pet object at 0x00000223BD4B74E0>>.

[我知道如何使用classsuperclass可以使我的代码更好,并试图弄清楚如何使基于Web的示例在本地工作。

这里是代码:

class Pet:  
    def __init__(self, name = 'Kitty'):
        self.name = name
    def mood(self):
        #code simplified for SO example
        return 'happy'
    def __str__(self):
        state = "   I'm {}. I feel {}.".format(self.name, self.mood)
        return state
class Cat(Pet):
    def chasing_rats(self):
        return "I'll get you!"
p1 = Pet("Fido")
print(p1)
python python-3.x class superclass
1个回答
1
投票

self.mood是类Pet的实例方法。因此,您需要通过将括号括为self.mood()

来将其作为方法来调用
class Pet:
    def __init__(self, name = 'Kitty'):
        self.name = name
    def mood(self):
        #code simplified for SO example
        return 'happy'
    def __str__(self):
        state = "   I'm {}. I feel {}.".format(self.name, self.mood())#updated this line
        return state
class Cat(Pet):
    def chasing_rats(self):
        return "I'll get you!"
p1 = Pet("Fido")
print(p1)

输出

I'm Fido. I feel happy.
© www.soinside.com 2019 - 2024. All rights reserved.