python类中几个特殊方法

Posted shiju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类中几个特殊方法的主要内容,如果未能解决你的问题,请参考以下文章

多线程中几个特殊的类

SQL Server 中几个有用的特殊函数

linux shell 脚本中几个特殊参数含义

Python中几种数据的常用内置方法

Python_020(几个经典内置方法)

使用开放CV和python提取或获取图像中几个点的平均RGB颜色