一个类实例可以通过__call__()变成一个可调用对象

例如: 把Person 类变成一个可调用对象:

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

对Person实例直接调用:

>>> p = Person('Tom', 'male')
>>> p('Rose')
My name is Bob...
My friend is Rose...
单看 p('Rose') 你无法确定 p 是一个函数还是一个类实例,
所以,在Python中,函数也是对象,对象和函数的区别并不显著。

__call__()相关推荐

  1. Python __call__详解

    20210507 相当于函数的默认调用()? 可以调用的对象 关于 __call__ 方法,不得不先提到一个概念,就是可调用对象(callable),我们平时自定义的函数.内置函数和类都属于可调用对象 ...

  2. PyTorch中nn.Module类中__call__方法介绍

    在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[-, Any] = ...

  3. Python3中__call__方法介绍

    如果Python3类中有__call__方法,那么此类实例的行为类似于函数并且可以像函数一样被调用.当实例作为函数被调用时,如果定义了此方法,则x(arg1, arg2, -)是x.__call__( ...

  4. python 类的特殊属性、特殊方法 __str__,__bases__,__mor__,__add__,__call__

    str 方法 class A():def __str__(self): # 重写__str__方法,功能:自动打印以下内容return "这是__str__方法" a = A() ...

  5. python __call__的作用,是可以将对象作为方法使用的关键 分析nn.Module源码

    代码举例 import torch.nn as nnclass LSTMClassifier(nn.Module):"""This is the simple RNN m ...

  6. python-装饰器,类与对象,私有字段,析构,__call__,继承,多继承,接口

    1.装饰器执行流程 装饰器可用于权限管理: 装饰器:将原函数替换为wrapper函数 def outer() @outer --- func1作为参数传入outer() def wrapper() - ...

  7. __call__() got an unexpected keyword argument 'partition_info'

    __call__() got an unexpected keyword argument 'partition_info' 解决办法:将tensorflow降级为1.8.0,解决问题.

  8. python六十三: __call__

    对象后面加括号,触发执行. ps:构造方法的执行是由创建对象触发的,即 对象 = 类名(); 而对于__call__方法的执行是由对象后加括号触发的, 即对象() 或者 类()() class Foo ...

  9. python中__init__后面加特殊符号_详解Python中的__new__、__init__、__call__三个特殊方法...

    __new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是sel ...

  10. python 元类的call_【原创】Python 对象创建过程中元类, __new__, __call__, __init__ 的处理...

    原始type: type是最原始的元类,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple, attr ...

最新文章

  1. 链表问题8——将单向链表按某值划分成左边小、中间相等、右边大的形式(进阶)
  2. python爬虫教程入门-Python爬虫系列 - 入门教学
  3. java斗破苍穹游戏阵容,斗破苍穹手游竞技场阵容搭配解析 最强阵容你知道吗
  4. 机器学习必学10大算法
  5. asp.net学习笔记·文件上传
  6. SpringBoot的端口配置server.port没办法设置成Linux的环境变量
  7. js基础中Null、undefined、NaN、false、0、{}的理解及使用
  8. HTML+CSS+JS实现 ❤️动态散花背景❤️
  9. bzoj 4570: [Scoi2016]妖怪 凸包
  10. java程序员 进阶_Java程序员进阶架构师的五个阶段,你到
  11. StateListDrawable 动态更换背景
  12. day9 集合基础命令
  13. android白圈闪现动画,Android基于Shader的图像处理(9)-仿抖音闪白特效
  14. vue html实例,一个页面上多个Vue实例
  15. NAS与文件系统服务器比较,磁盘阵列与NAS服务器的比较
  16. oracle死锁级别locked_mode
  17. win11 删除自带的微软输入法
  18. AS3 setTimeOut、setInterval、Timer 的区别和用法
  19. 知行合一拿什么保证?
  20. 元宇宙岗位薪资排行榜,出炉!

热门文章

  1. 计算机专业研究生的英语复试
  2. 数据库附加出错解决方法
  3. 计算机机房线槽,镀锌线槽机房布线的使用方式
  4. windows 执行 bat命令问题
  5. 关于少量数据的多分类问题
  6. keil c51如何添加STC芯片的固件库文件
  7. excel 添加垂直竖向直线
  8. Android.bp 语法和使用
  9. sql语句 execute、executeQuery和executeUpdate之间的区别
  10. WebApp开发入门