海山闲谈

千里易见,跬步难积

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

问题现象
运行如下代码:

class Digua:
    def __init__(self):
        """原始地瓜,所有参数初始化"""
        # 地瓜烤制时间归零
        self.cook_time = 0
        # 地瓜烤制状态
        self.status = "生的"
        # 地瓜调味
        self.taste = []

    def __str__(self):
        return f"这个地瓜烤制了{self.cook_time}分钟,当前状态是{self.status},选择的调料口味为{self.taste}"

    def cook_time(self, time):
        """烤制地瓜的时间"""
        # 地瓜整体烤制时间
        self.cook_time += time
        # 使用整体时间判断地瓜烤制状态
        if 0 <= self.cook_time < 3:
            self.status = "生的"
        elif 3 <= self.cook_time < 5:
            self.status = "半生不熟"
        elif 5 <= self.cook_time < 8:
            self.status = "熟的"
        elif self.cook_time >= 8:
            self.status = "糊了"


digua1 = Digua()
digua1.cook_time(2)
print(digua1)

出现如标题所示的报错

TypeError: 'int' object is not callable

原因分析
这是一个新手容易犯的问题,根本原因是cook_time既作为一个变量名,又作为了一个函数名,两者重名了。在调用时,程序会误认为在调佣这变量而不是函数,从而报错不可调用

解决方法
修改变量名称或者函数名称,使两者不再重名即可

posted on 2023-03-05 00:47  不山  阅读(673)  评论(0编辑  收藏  举报