代码之家  ›  专栏  ›  技术社区  ›  pr0p

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

  •  2
  • pr0p  · 技术社区  · 8 年前
    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:“instancemethod”类型的对象没有len()

    2 回复  |  直到 8 年前
        1
  •  1
  •   hspandher    8 年前

    t 作为实例变量。

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

    t 方法,它将作为一个方法,并作为第一次调用后的字符串。不要挖一个洞让自己掉进去。

        2
  •  1
  •   Subham    5 年前

    最终代码,

    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]
    
    推荐文章