1. 程式人生 > >錯誤: TypeError: 'str' object is not callable,TypeError: 'int' object is not callable等

錯誤: TypeError: 'str' object is not callable,TypeError: 'int' object is not callable等

先說上面出現的原因:

TypeError: 'str' object is not callable:就是str不可以被系統呼叫,

TypeError: 'int' object is not callable:就是int不可以被系統呼叫

原因就是:你正在呼叫一個不能被呼叫的變數或物件,就是你呼叫函式、屬性變數的方式錯誤。你可能即定義了一個名為dance(這個名稱是隨便取的,我看到網上大多都是用str這個作為列子和str()函式重名,沒怎麼說清楚,特別說明一下)的屬性變數,還定義了一個dance函式,當呼叫dance函式的時候,就會出現上述的錯誤情況。
例子:

# 錯誤程式碼
class life(object):
    
    # 有dance屬性變數
    def __init__(self, dance, eat):
   
        self.dance = dance
        self.eat = eat
    
    # 又有dance()函式
    def dance(self):
        return '跳舞{}次!'.format(self.dance)


    def eat(self):
        return '吃飯{}次!'.format(self.eat)


if __name__ == '__main__':

    someone = life(1, 3)
    # 呼叫dance()函式
    a = someone.dance()
    print(a)

正確程式碼:只用函式名和屬性變數名不一樣就好了

class life(object):

    def __init__(self, dance, eat):

        self.dance = dance
        self.eat = eat

    def dance_count(self):
        return '跳舞{}次!'.format(self.dance)


    def eat_count(self):
        return '吃飯{}次!'.format(self.eat)


if __name__ == '__main__':
    
    someone = life(1, 3)
    a = someone.dance_count()
    print(a)



# 或者是

class life(object):

    def __init__(self, dance, eat):

        self.dance1 = dance
        self.eat1 = eat

    def dance(self):
        return '跳舞{}次!'.format(self.dance1)


    def eat(self):
        return '吃飯{}次!'.format(self.eat1)


if __name__ == '__main__':

    someone = life(1, 3)
    a = someone.dance()
    print(a)