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:类型为&#39; instancemethod&#39;的对象没有len()
答案 0 :(得分:1)
您忘记调用方法,该方法已将同名t
作为实例变量。
def qrt(self):
print(len(self.t()))
通过命名方法与正在使用fire的实例变量相同。第一次调用t
方法时,它将表现为方法,并作为首次调用的字符串。不要为自己挖一个漏洞。
答案 1 :(得分:1)
最终代码,
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]