You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类内值相乘遇问题:调用方法返回绑定方法而非结果

嘿,我来帮你搞定这个问题!作为刚接触OOP的新手,这种小坑太常见啦~

问题出在哪?

你看到的那个奇怪的bound method...输出,是因为你调用类方法的时候没加括号!

看你代码最后一行:

print (apple.price)

这里的apple.price只是在引用price这个方法本身,并没有真正执行它。Python就会告诉你“这是一个绑定到apple实例上的方法对象”,而不是输出计算结果。

另外还有个小问题:你的price方法现在是直接打印计算值,没有返回结果。就算你加了括号,print(apple.price())也会先打出24,再打出None(因为方法没写return),这也不是你想要的效果。

修正后的代码

class Bread:  # Python里类名习惯用大驼峰命名哦,更规范
    def __init__(self, grain, cost, number):
        self.grain = grain
        self.cost = int(cost)
        self.number = int(number)
    
    def price(self):
        p = self.cost * self.number
        return p  # 改成返回结果,而不是直接打印

# 创建实例时不用手动转int,__init__里已经处理啦
apple = Bread("wholemeal", 2, 12)
print(apple.grain, apple.cost, apple.number)
print(apple.price())  # 重点!调用方法必须加括号!

为啥这样改就对了?

  • 方法调用要加括号:类的实例方法必须用实例.方法名()的形式调用,这样才会执行方法里的逻辑,拿到你要的计算结果。
  • 让方法返回结果:把print(p)换成return p,这样你可以灵活地使用这个计算值(比如打印、赋值给变量),而不是让方法直接输出,代码复用性更高。
  • 小规范优化:类名用大驼峰是Python的PEP8规范,看着更清晰;创建实例时传入的数字不用手动转int,因为构造方法里已经帮你做了类型转换。

现在运行这段代码,就能得到你预期的24啦!

内容的提问来源于stack exchange,提问作者arung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:01:52