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

Python 2.7 与实例变量使用相关的Python OOP,python-2.7,python-3.x,class,oop,instance-variables,Python 2.7,Python 3.x,Class,Oop,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 = i

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

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()
回溯(最近一次呼叫最后一次):
文件“C:/Users/Prajval/Desktop/test.py”,第11行,在
abc.qrt()
文件“C:/Users/Prajval/Desktop/test.py”,第8行,在qrt中
打印(len(self.t))
TypeError:类型为“instancemethod”的对象没有len()
以下错误是什么意思:

TypeError:类型为“instancemethod”的对象没有len()


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

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()
通过将方法命名为与您正在玩火的实例变量相同的方法。当您第一次调用
t
方法时,它将作为一个方法,并作为第一次调用后的字符串。不要给自己挖一个坑,让自己掉进去

最终代码

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

它给出错误,因为变量“t”不存在
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]