首页 python基础教程 Python面向对象-__call__()方法实现对象转函数
pay pay

Python面向对象-__call__()方法实现对象转函数

日期: 2021年12月4日 05:41
栏目: python基础教程
阅读: 121
作者: python自学网

摘要: 我们都说python中一切皆对象,这其中也包含函数,既然函数是对象,那么就说明对象也能实现函数一样的效果了。python类中有个函数__call__()方法就能实现这样的功能,下面我们来演示一下。

我们都说python中一切皆对象,这其中也包含函数,既然函数是对象,那么就说明对象也能实现函数一样的效果了。python类中有个函数__call__()方法就能实现这样的功能,下面我们来演示一下。

先来看看__call__()方法的实现和用法。

class Dog(object):
    name = '小狗'

    def __call__(self, age):
        print('%s被调用了,年龄是%d' % (self.name, age))

d = Dog()
d(111)  # 把d对象当做函数来使用

返回结果:

小狗被调用了,年龄是111

通过返回结果我们可以看出来,对象d就想函数一样被我们使用,同时还能传入参数。

函数当中还有很多高级函数,我们就拿偏函数来再举个例子,深入的看看__call__()方法的使用。

# 与偏函数对比讲解
class Dog(object):
    def __init__(self, name):
        self.name = name

    def __call__(self, color):
        print('%s是一直小狗,颜色是%s' % (self.name, color))


d = Dog('Tom')  # 创建对象的时候先把初始化参数传入,
d('黑色')  # 通过call函数传入另一个参数,实现偏函数效果
d('黄色')  # 这里使用对象加上小括号调用的时候会自动调用call方法,__call__和对象之间建立联系的地方

 

目录
回顶部