除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上。如果想判断对象
能否调用,可以使用内置的 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. 【待补充】[HDFS_3] HDFS 工作机制

    0. 说明 HDFS 初始化文件系统分析 && HDFS 文件写入流程 && HDFS 文件读取流程分析 有价值的相关文章: [漫画解读]HDFS存储原理 1. HDF ...

  2. Ubuntu 16.04 LTS 降级安装GCC 4.8

    转载自https://www.linuxidc.com/Linux/2017-03/142299.htm Ubuntu 16.04 LTS 降级安装GCC 4.8 [日期:2017-03-28] 来源 ...

  3. 函数重载(overload)

    重载的定义及特点 在同一个类中,允许存在一个以上的同名函数, 只要他们的参数个数或者参数类型不同(不仅指两个重载方法的参数类型不同,还指相同参数拥有不同的参数类型顺序)就构成重载. 重载只和参数列表有 ...

  4. deepin安装Oracle jdk8,以及添加add-apt-repository命令支持

    @font-face{ font-family:"Times New Roman"; } @font-face{ font-family:"宋体"; } p.M ...

  5. lamp/lnmp下添加PHP扩展

    在linux下安装好基本的PHP运行环境后有时候添加了新的功能,就得增加新的扩展,比如之前没有安装redis扩展,可以手动编译安装相关的扩展可以找下下载的php源码包中,ext目录下是否有相关的扩展源 ...

  6. 使用 React-Sketchapp 管理你的设计资产

    首发:https://www.yuque.com/jingwhale/blog/do37mc 最近在整理设计规范的过程中,尝试使用了 Airbnb 公司发布的 react-sketchapp 工具.从 ...

  7. css 位置居中篇,flex布局【转】

    最近看到沅老师的博客,关于flex布局的,觉得不错,http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

  8. Django之数据表增删改查

    Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...

  9. 字典树模板题(统计难题 HDU - 1251)

    https://vjudge.net/problem/HDU-1251 标准的字典树模板题: 也注意一下输入方法: #include<iostream> #include<cstdi ...

  10. 【Odoo 8开发教程】第二章:Odoo生产环境部署设置

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/10792977.html 一:dbfilter 数据库访问规则设置 一个odoo实例可以连接到不同的数据库实例中 ...