__call__()让你的实例像方法一样去调用

允许你的类的实例像函数一样被调用

基本作用

__call__()方法是一个特殊方法,允许你的类的实例像函数一样被调用

示例:

 1class Example:
 2    def __init__(self):
 3        print("Instance Created")
 4
 5    def __call__(self):
 6        print("Instance is called via special method")
 7
 8# 创建类的实例
 9e = Example()
10
11# 调用__call__方法
12e()  #Instance is called via special method

__call____init__的区别:

  • __init__ 用于初始化实例
  • __call__ 用于定义实例被调用时的行为

典型用法

  1. 让对象行为表现得像函数
1class Multiplier:
2    def __init__(self, factor):
3        self.factor = factor
4
5    def __call__(self, x):
6        return self.factor * x
7
8double = Multiplier(2)
9print(double(5))  # 输出: 10

Multiplier 类的实例 double 可以被调用来将输入值乘以指定的因子。

  1. 创建函数工厂,根据参数生成特定行为的函数
 1class FunctionFactory:
 2    def __call__(self, operation):
 3        if operation == 'add':
 4            return lambda x, y: x + y
 5        elif operation == 'subtract':
 6            return lambda x, y: x - y
 7
 8factory = FunctionFactory()
 9add_func = factory('add')
10print(add_func(10, 5))  # 输出: 15