python特殊函数之__call__函数的作用
作用
将一个类实例也可以变成一个可调用对象。
详解
__call__ 是 Python 中一个魔术方法(magic method),它用于定义对象的函数调用行为。换句话说,当你尝试调用一个具有 __call__ 方法的对象时,Python 会自动调用该方法。
下面是一个简单的例子来说明 __call__ 的作用:
class MyClass:
def __init__(self, value):
self.value = value
def __call__(self):
return self.value * 2
obj = MyClass(5)
__call__ 方法可以用于实现许多不同的行为,例如:
自定义对象的函数调用行为;
将对象转换为函数;
实现装饰器或代理;
实现模拟或模拟测试。
需要注意的是,__call__ 方法必须返回一个值,否则调用表达式将导致一个错误。此外,由于 __call__ 方法本身是一个特殊的方法,因此不能在普通类中直接调用。
实例
另一个实例:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print('My name is %s...' % self.name)
print('My friend is %s...' % friend)
p = Person('AI浩', 'male')
p("AI")
改造斐波那契数列
class Fib(object):
def __init__(self):
pass
def __call__(self, num):
a, b = 0, 1;
self.l = []
for i in range(num):
self.l.append(a)
a, b = b, a + b
return self.l
def __str__(self):
return str(self.l)
__rept__ = __str__
f = Fib()
print(f(200))
速度嘎嘎的!
将一个类实例也可以变成一个可调用对象。
详解
__call__ 是 Python 中一个魔术方法(magic method),它用于定义对象的函数调用行为。换句话说,当你尝试调用一个具有 __call__ 方法的对象时,Python 会自动调用该方法。
下面是一个简单的例子来说明 __call__ 的作用:
class MyClass:
def __init__(self, value):
self.value = value
def __call__(self):
return self.value * 2
obj = MyClass(5)
print(obj()) # 输出 10
__call__ 方法可以用于实现许多不同的行为,例如:
自定义对象的函数调用行为;
将对象转换为函数;
实现装饰器或代理;
实现模拟或模拟测试。
需要注意的是,__call__ 方法必须返回一个值,否则调用表达式将导致一个错误。此外,由于 __call__ 方法本身是一个特殊的方法,因此不能在普通类中直接调用。
实例
另一个实例:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print('My name is %s...' % self.name)
print('My friend is %s...' % friend)
p = Person('AI浩', 'male')
p("AI")
改造斐波那契数列
class Fib(object):
def __init__(self):
pass
def __call__(self, num):
a, b = 0, 1;
self.l = []
for i in range(num):
self.l.append(a)
a, b = b, a + b
return self.l
def __str__(self):
return str(self.l)
__rept__ = __str__
f = Fib()
print(f(200))
速度嘎嘎的!
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com