【问题标题】:Meaning of "'bool' object is not callable"? [duplicate]“'bool'对象不可调用”的含义? [复制]
【发布时间】:2019-10-09 16:27:34
【问题描述】:

当我尝试运行函数“iswalking()”时出现此错误

我正在尝试学习 OOP 概念,这就是我目前所创造的......

class Human:
    def __init__(self,name,age,gender):
        self.name = name 
        self.age=age
        self.gender= gender
    def iswalking(self,TOF):
        self.TOF = TOF
        if TOF:
            print("walking")
        else:
            print("sitting")
    def introduce_self(self):
        print("my name is ",self.name)
        print("my age is ",self.age)
        print("my gender is ",self.gender)

h1=Human("Armaan",16,"male")
h1.iswalking=False
h1.introduce_self()
h1.iswalking()

我期望输出:

my name is  Armaan                                                                                                                     
my age is  16                                                                                                                          
my gender is  male 

sitting

我得到了什么:

my name is  Armaan                                                                                                                     
my age is  16                                                                                                                          
my gender is  male                                                                                                                     
Traceback (most recent call last):                                                                                                     
  File "main.py", line 19, in <module>                                                                                                 
    h1.iswalking()                                                                                                                     
TypeError: 'bool' object is not callable                                                                                               


...Program finished with exit code 1                                                                                                   
Press ENTER to exit console.

【问题讨论】:

  • h1.iswalking=False 在这里,您正在使用布尔值 (False) 覆盖函数 iswalking,因此当您稍后尝试调用该函数时,您会收到错误,因为布尔值是不可调用的。你想用那条线做什么?

标签: python class object syntax-error object-oriented-analysis


【解决方案1】:

您已将一个函数重新分配给一个布尔值,然后尝试调用该布尔值,认为它仍然是一个函数。

你想要的是这个:

class Human:
    def __init__(self,name,age,gender):
        self.name = name 
        self.age=age
        self.gender= gender
    def is_walking(self):
        if self.iswalking:
            print("walking")
        else:
            print("sitting")
    def introduce_self(self):
        print("my name is ",self.name)
        print("my age is ",self.age)
        print("my gender is ",self.gender)

h1=Human("Armaan",16,"male")
h1.iswalking=False
h1.introduce_self()
h1.iswalking()

这样可以避免重新分配函数。

【讨论】:

    【解决方案2】:
    h1=Human("Armaan",16,"male")
    h1.iswalking=False # first 
    h1.introduce_self()
    h1.iswalking()     # second
    

    在第一行中,您将属性 iswalking 更改为 False - 这是一个布尔值。

    在第二行中,您尝试调用 iswalking - 您已将其设置为 False = 所以您尝试调用 FalseFalse() - 这将引发您遇到的错误看到。

    我相信你想这样做:

    h1.iswalking(False)
    

    应该打印的内容:

    sitting
    

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2021-06-07
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多