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

python中__call__()方法的用法

时间:2019-01-27 16:50:36      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:alt   复制   简单的   called   代码   定义   __call   bar   turn   

 

 

__call__()的用法

  __call__()方法能够让类的实例对象,像函数一样被调用;

技术分享图片
技术分享图片
>>> 
>>> class A(object):
    def __call__(self, x):
        print(‘__call__ called, print x: ‘, x)

        
>>> 
>>> a = A()
>>> a(‘123‘)
__call__ called, print x:  123
>>> 
技术分享图片
技术分享图片

  看a(‘123‘)这是函数的调用方法,这里a实际上是类对象A的实例对象,实例对象能想函数一样传参并被调用,就是__call__()方法的功能;

 

接下来用一段简单的代码,来总体感受一下三个方法的用法和区别:

技术分享图片
技术分享图片
>>> 
>>> class A(object):
    def __init__(self, x):
        print (‘x in __init__‘, x)
    def __new__(cls, y):
        print ‘y in __new__‘, y
        return super(A, cls).__new__(cls)
    def __call__(self, z):
        print( ‘z in __call__‘, z)

        
>>> 
>>> A(‘123‘)(‘abc‘)
y in __new__ 123
x in __init__ 123
z in __call__ abc
>>> 
技术分享图片
技术分享图片

  由执行结果可以看出,虽然__init__()方法定义在__new__()方法之前,但是结果中先展示了__new__()方法的执行结果;

python中__call__()方法的用法

标签:alt   复制   简单的   called   代码   定义   __call   bar   turn   

原文地址:https://www.cnblogs.com/linwenbin/p/10326232.html

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