除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上。如果想判断对象
能否调用,可以使用内置的 callable() 函数。Python 数据模型文档列出了 7 种可调用对
象。
(1)用户定义的函数
  使用 def 语句或 lambda 表达式创建。

(2)内置函数
  使用 C 语言(CPython)实现的函数,如 len 或 time.strftime。

(3)内置方法
  使用 C 语言实现的方法,如 dict.get。

(4)方法
  在类的定义体中定义的函数。

(5)类
  调用类时会运行类的 __new__ 方法创建一个实例,然后运行 __init__ 方法,初始
化实例,最后把实例返回给调用方。因为 Python 没有 new 运算符,所以调用类相当于调
用函数。(通常,调用类会创建那个类的实例,不过覆盖 __new__ 方法的话,也可能出
现其他行为。)

(6)类的实例
      如果类定义了 __call__ 方法,那么它的实例可以作为函数调用。

(7)使用 yield 关键字的函数或方法。

调用生成器函数返回的是生成器对象。

Python 可调用对象的更多相关文章

  1. python 可调用对象之类实例

    可调用对象,即任何可以通过函数操作符()来调用的对象. python可调用对象大致可以分为4类: 1.函数 python中有三种函数:内建函数(BIFs).用户自定义函数(UDF).lambda表达式 ...

  2. Python深入03 对象的属性

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python一切皆对象(object),每个对象都可能有多个属性(attribut ...

  3. Python中的7种可调用对象

    Python中有七种可调用对象,可调用对象可使用内置函数callable来检测 一.用户自定义的函数: 使用def语句或者lambda表达式创建的函数. 二.内置函数: 使用C语言实现的函数,如len ...

  4. Python面向对象 -- slots, @property、多重继承MixIn、定制类(str, iter, getitem, getattr, call, callable函数,可调用对象)、元类(type, metaclass)

    面向对象设计中最基础的3个概念:数据封装.继承和多态 动态给class增加功能 正常情况下,当定义了一个class,然后创建了一个class的实例后,可以在程序运行的过程中给该实例绑定任何属性和方法, ...

  5. python在交互模式下直接输入对象后回车,调用的是对象的__repr__()方法,这个方法表示的是一个编码,用print+对象是调用对象的__str__方法

    交互模式下调用对象的__repr__()方法,这个方法表示的是一个编码 >>> u"国庆节快乐"u'\u56fd\u5e86\u8282\u5feb\u4e50' ...

  6. python动态获取对象的属性和方法 (转载)

    首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...

  7. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  8. python子类调用父类的方法

    python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...

  9. python 引用和对象理解

    今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...

随机推荐

  1. Servlet (HttpServletResponse)对象

    1.setStatus(int status)方法:用于设置HTTP响应消息的状态码,并生成响应状态行.响应状态行中的状态描述信息直接与状态码相关,HTTP版本由服务器确定,因此只需要通过这个方法设置 ...

  2. CorelDRAW(cdr) 2018安装教程详解

    令人期待的coreldraw2018最新版已经发布了,相信各位设计从业者已经迫不及待想要知道这次版本会带来什么新的东西,本次小编带来的coreldraw2018破解版,附有注册补丁,激活之后可以永久免 ...

  3. JavaScript高级程序设计学习(五)之对象

    众说周知,java是面向对象的编程语言.一个类包含多个对象,例如车类,它包含宝马,奔驰,东风,本田,莲花等这样的车,而品牌和颜色或者某种标识就是它的属性.车包含很多种类,但是共性还是有的,比如共性有四 ...

  4. patch函数的解释2

    patch 创建补片图形对象 句法: patch(X,Y,C) patch(X,Y,Z,C) patch(FV) patch(...'PropertyName',propertyvalue...) p ...

  5. nginx环境搭建

    nginx安装步骤 安装nginx[root@insure opt]# yum install nginx启动nginx [root@insure opt]# service nginx start ...

  6. 2018-2019-2 20175105 实验一《JAVA开发环境的熟悉》实验报告

    一.实验内容及步骤 (一)使用JDK编译.运行简单的Java程序 利用cd指令和mkdir指令创建文件夹 利用vim指令编辑源代码文件 利用javac指令编译,利用java指令运行 (二)使用IDEA ...

  7. Luogu P3366 【模板】最小生成树

    qwq #include<cstdio> #include<algorithm> using namespace std; ]; int n,m; struct abc { i ...

  8. Quartz的JobDetail没有触发器指向时会被删除的问题

    之前项目里使用的是老版本的Quartz,才1.6.5.发现一个问题,如果我触发器配置的时间已经过了,想去手动触发一个任务,就会报找不到这个任务的异常,通过debug可以发现,Scheduler里添加j ...

  9. 1-Android开发验证码(使用第三方Mob,注册)

    http://www.mob.com/ 注册以后 可以直接放在 可以下载到手机里面试一下了 后续就不截图了 补充: 自定义签名

  10. TCP/IP协议--TCP的超时和重传

    TCP是可靠传输.可靠之一体现在收到数据后,返回去一个确认.但是不能完全避免的是,数据和确认都可能丢失.解决这个办法就是,提供一个发送的重传定时器:如果定时器溢出时还没收到确认,它就重传这个报文段. ...