“'bool'object is not callable”的意思是什么?

2024-09-29 01:36:05 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试运行函数'iswalking()'时出现此错误

我正在努力学习面向对象的概念,这是迄今为止我所创造的。。。你知道吗

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.

Tags: nameselfageismydefgenderh1
2条回答

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

相反,你想要的是:

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()

这样可以避免重新分配函数。你知道吗

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

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

在第二行中,您试图调用iswalking—您已将其设置为False=因此您试图调用False—即False()—这将引发您看到的错误。你知道吗

我相信你想这么做:

h1.iswalking(False)

应打印:

sitting

相关问题 更多 >