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

Python类中累加多个方法返回值时报method相加错误如何解决

问题修复方案

错误原因

你遇到的TypeError: unsupported operand type(s) for +: 'method' and 'method'报错,是因为在final_rate方法中调用rate_size、rate_breed、rate_color三个实例方法时没有加括号():

  • 不加()时,代码拿到的是方法对象本身,不是方法执行后返回的评分数值,自然无法做加法运算
  • 加()才会触发方法执行,拿到你需要的评分返回值

修复代码

只需要修改final_rate方法的实现即可:

def final_rate(self):
    # 所有实例方法调用都加上(),获取返回的评分值再做运算
    final_rating = (self.rate_size() + self.rate_breed() + self.rate_color()) * 33
    return final_rating

修复后完整可运行代码

import random
colors = ['brown','black','yellow', 'green','purple','golden','white','pink']
breeds = ['lab','border collie','dalmation','husky','chiauaua']
sizes = ['small','medium','large']

class Dog:
    def __init__(self, color, breed, size):
        self.color = color
        self.breed = breed
        self.size = size
    
    def rate_color(self):
        for index, color in enumerate(colors):
            if self.color == color:
                color_rating = abs(index - len(colors)) / len(colors)
                return color_rating
    def rate_breed(self):
        for index, breed in enumerate(breeds):
            if self.breed == breed:
                breed_rating = abs(index - len(breeds)) / len(breeds)
                return breed_rating
    def rate_size(self):
        for index, size in enumerate(sizes):
            if self.size == size:
                size_rating = abs(index - len(sizes)) / len(sizes)
                return size_rating
    def final_rate(self):
        final_rating = (self.rate_size() + self.rate_breed() + self.rate_color()) * 33
        return final_rating
  
dog1 = Dog(random.choice(colors),random.choice(breeds),random.choice(sizes))
print(dog1.color)
print(dog1.rate_color())
print(dog1.breed)
print(dog1.rate_breed())
print(dog1.size)
print(dog1.rate_size())

print(dog1.final_rate())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:01