Python之用__XXX__定制类

一、常见__XXX__

     在python中像__slots__等__XXX__的变量/函数名都是有特殊用处的。

  (1)__str__:打印一个实例,能返回内部的字符串。

         通常我们直接打印实例,返回的是一串内存地址  

         

         如果使用__str__,直接打印实例,返回一串字符串

         

    (2)__iter__:实现一个类用于for ..in循环,返回一个可迭代对象。

         

  (3)__getitem__:在类中定义了__getitem__方法,其实例为p,直接用p【key】取值

          

   (4)__getattr__:调用类中不存在的方法/属性时会报错,用__getattr_,当调用不存在的属性时,动态返回一个属性。

                               当属性存在时,是不会调用_getattr_.

           注意到任意调用如s.abc都会返回None,这是因为我们定义的__getattr__默认返回就是None

           

   (5)__call__:若在类中实现了__call__方法,会将实例对象变成可调用对象。

                         可调用对象(callable):类,函数等,callable(s)可判断是否是可调用对象。

            

原文地址:https://www.cnblogs.com/balllyh/p/13362183.html