码迷,mamicode.com
首页 > 编程语言 > 详细

python类中几个特殊方法

时间:2018-08-22 18:29:57      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:__add__   __init__   call   pre   类型   display   init   __call__   python   

class TT:
    def __init__(self):
        print "__init__"

    def __call__(self):
        print "__call__"

    def __str__(self):
        return "__str__"
    
    def __int__(self):
        return "__int__"

    def __add__(self,other):
        return "__add__"

    def __sub__(self,other):
        return "__sub__"

    def __mul__(self,other):
        return "__mul__"

    def __div__(self,other):
        return "__div__" 
    def __del__(self):
        print "析构函数被调用"

 

在Python中,定义一个类TT如上,那么

  • 执行 obj = TT()方法,将自动调用TT中的 __init__ 方法
  • 在执行obj() 或者TT()(),即类成员后加括号方式调用,则会自动调用 __call__ 方法
  • 如果要将对象转换为int类型,即ret = int(obj)则会自动调用类的 __int__ 方法,并将返回值赋值给左边变量
  • 同样如果需要将对象转换为str类型,即ret = str(obj)则会自动调用类的 __str__方法,并将返回值赋值给左边变量
  • 调用print(obj)方法,等同于调用print(str(obj))方法,最终也会调用到类的 __str__方法
  • 两个对象相加时候,则会自动调用第一个对象的 __add__方法,并将第一个个对象当做参数传入这个方法中,同理还有 __sub__、__mul__、__div__
  • 析构函数,即__del__,在对象销毁的时候自动调用
  • obj.__dict__,会将obj对象中的成员以词典方式展示出来;TT.__dict__会将类中的成员以词典方式展示出来

如下所示:  

obj = TT()       # __init__
obj()            # __call__
print(int(obj))  # __int__
print(str(obj))  # __str__
print(obj)     # __str__
print(obj+50)     # __add__
print(obj-50)     # __sub__
print(obj*50)     # __mul__
print(obj/50)     # __div__
del obj           # 析构函数被调用

 

 

 

 

python类中几个特殊方法

标签:__add__   __init__   call   pre   类型   display   init   __call__   python   

原文地址:https://www.cnblogs.com/shiju/p/9519032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!