zoukankan      html  css  js  c++  java
  • python3 __call__方法

    刷面试题看到的,没看懂这个方法有什么实际用途,官方文档如下:

    3.3.6. Emulating callable objects

    object.__call__(self[, args...])
      Called when the instance is “called” as a function; if this method is defined, x(arg1, arg2, ...) is a shorthand for x.__call__(arg1, arg2, ...).

    主要实现的是将类的对象当作函数直接调用

    例如:

    class Demo(object):
        def __init__(self, a, b):
            self.a = a
            self.b = b
    
        def my_print(self,):
            print("a = ", self.a, "b = ", self.b)
    
        def __call__(self, *args, **kwargs):
            self.a = args[0]
            self.b = args[1]
            print("call: a = ", self.a, "b = ", self.b)
    
    if __name__ == "__main__":
        demo = Demo(10, 20)
        demo.my_print()
    
        demo(50, 60)
    结果如下:
    a =  10 b =  20
    call: a =  50 b =  60

     需要注意的是:只有当在类中定义了 def __call__() 方法后,才可以实现这个功能,否则会出现语法错误,就是文档中解释的 if this method is defined 的意思。



  • 相关阅读:
    [LeetCode] 101. 对称二叉树
    [LeetCode] 394. 字符串解码!!!!
    USACO Ordered Fractions
    USACO The Castle
    遇到的Mysql的一个坑
    USACO-palsquare 遇到的一个坑
    大整数相乘
    vs2012扩展
    JS实现文字倒计数
    jqAutoComplete 和 knockout
  • 原文地址:https://www.cnblogs.com/SBJBA/p/11355412.html
Copyright © 2011-2022 走看看