Python 与实例变量的使用相关的 OOP

Python OOP related to usage of instance variables

class idk():
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def t(self):
        self.t = self.name + self.age
    def qrt(self):
        print(len(self.t))                             

abc = idk('abc','19')                 
abc.qrt()

abc.name= 'aduhd'            
abc.qrt()

当我运行这段代码时,我得到以下错误

Traceback (most recent call last):
    File "C:/Users/Prajval/Desktop/test.py", line 11, in <module>
        abc.qrt()
    File "C:/Users/Prajval/Desktop/test.py", line 8, in qrt
        print(len(self.t))
TypeError: object of type 'instancemethod' has no len()

以下错误是什么意思:

TypeError: object of type 'instancemethod' has no len()

您忘记调用该方法,该方法的名称与实例变量相同t

def qrt(self):
    print(len(self.t()))

将方法命名为与实例变量相同的名称是在玩火。第一次调用 t 方法时,它将表现为方法,并且表现为字符串 post 首次调用。不要给自己挖坑掉进去。

最终代码,

class idk():
    def __init__(self,name,age):
        self.name = name
        self.age = age
        
    def t(self):
        self.t1 = self.name + self.age
        return self. t1 # was missing 
        
    def qrt(self):
        print(len(self.t()))                             

abc = idk('abc','19')                 
abc.qrt()

abc.name= 'aduhd'            
abc.qrt()
5
7

[Program finished]