通过__str__( )函数可以打印对象的属性信息,方便我们调试代码。

#通过__str__( )函数可以打印对象的属性信息,方便我们调试代码。class aa(object):def __init__(self,name,age):self.name = nameself.age = agedef __str__(self):return self.name + str(self.age)    #这里返回的是字符串不是int类型,要转化tom = aa("小三",18)
print(tom)
print(tom.name)打印结果:
小三18
小三

python中的__name__

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def index():print("9999")index()
f = index
print(index.__name__)  #得到的是函数名
print(f.__name__)运行结果:
index
index

python中的__call__

在Python中,__ init__()函数的意义等同于类的构造器(同理,__ del__()等同于类的析构函数)。因此,__ init__()方法的作用是创建一个类的实例。

__ call __ ()

Python中的函数是一级对象。这意味着Python中的函数的引用可以作为输入传递到其他的函数/方法中,并在其中被执行。
而Python中类的实例(对象)可以被当做函数对待。也就是说,我们可以将它们作为输入传递到其他的函数/方法中并调用他们,正如我们调用一个正常的函数那样。而类中__call__()函数的意义正在于此。为了将一个类实例当做函数调用,我们需要在类中实现__call__()方法。也就是我们要在类中实现如下方法:def __ call__(self, *args)。这个方法接受一定数量的变量作为输入。
假设x是X类的一个实例。那么调用x.__ call__(1,2)等同于调用x(1,2)。这个实例本身在这里相当于一个函数。

总结

那么,__ init __ ()和__call__()的区别如下:

  1. __ init__()的作用是初始化某个类的一个实例。
  2. __ call__()的作用是使实例能够像函数一样被调用,同时不影响实例本身的生命周期(__ call__()不影响一个实例的构造和析构)。但是__call__()可以用来改变实例的内部成员的值。

本身类对象调用函数是 :对象.函数名,

class Foo(object):def __init__(self, a, b, range):self.a = aself.b = bself.range = rangedef add(self,a,b):print("a+b的值为:%d"%(a+b))def __call__(self, a, b):self.a = aself.b = bprint('打印call方法({}, {})'.format(self.a, self.b))x1 = Foo(1, 2, 3)#实例化一个对象
print(x1)  #<__main__.Foo object at 0x000002A0A593A3C8>x1.add(3,5) #对象.函数名 #打印结果为:a+b的值为:8
x1(1,2) #打印结果为:打印call方法(1, 2) ####将一个类实例对象当做函数调用,直接执行__call__方法

python中的__str__ __name__ 和__call__方法相关推荐

  1. python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些

    Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些 发布时间:2020-11-05 17:11:48 来源:亿速云 阅读:95 作者:Leah 本篇文章给大家分享的是有关P ...

  2. python中出栈的方法,python中栈的原理及实现方法示例

    python中栈的原理及实现方法示例 本文实例讲述了python中栈的原理及实现方法.分享给大家供大家参考,具体如下: 栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素.访问元素.删除元 ...

  3. python中的class怎么用_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  4. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  5. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

  6. python getattr调用自己模块_在Python中通过getattr获取对象引用的方法

    getattr函数 (1)使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用. >>> li = ["Larry", "Curly ...

  7. 什么是python中子类父类_零基础入门:python中子类继承父类的__init__方法实例

    前言: 今天为大家带来的内容是零基础入门:python中子类继承父类的__init__方法实例!具有不错的参考意义,希望在此能够帮助到各位!(喜欢的话记得点赞转发关注不迷路哦) 使用Python写过面 ...

  8. python中class变量_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  9. python中怎么调用函数_浅谈Python中函数的定义及其调用方法

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...

最新文章

  1. 第九周项目二-我的数组类
  2. 【NOI 2011】阿狸的打字机
  3. JQ中的方法、事件及动画
  4. Linux系统编程26:进程间通信之进程间通信的基本概念
  5. Oracle10gR5GridControl InstallOnLinux
  6. Python之 range()函数✅
  7. Eclipse中Latex配置
  8. 由世纪互联运营的 Windows Azure 现已在中国正式发布
  9. c语言常用绘图软件有哪些,数学绘图软件有哪些?好用的数学绘图软件推荐
  10. oracle中的中文排序,Oracle下的中文排序
  11. win7系统用笔记本做wifi热点
  12. 使用腾讯云sms短信服务
  13. the remote end hung up unexpectedly Everything up-to-date
  14. 小程序+二维码(带logo图片,可直接运行)
  15. 虚拟机重启网卡命令和防火墙关闭和开启
  16. 百度自然语言接口调用
  17. 中国农科院基因组所汪鸿儒课题组诚邀加入
  18. 对接支付宝网站支付接口
  19. 【WPS表格】数据透视表:修改行列字段顺序
  20. M1芯片的Mac安装Centos !

热门文章

  1. Solr实战(二):索引操作
  2. MongoDB入门简单介绍
  3. 函数集成redis与Spring集成
  4. 微軟 ASP.NET 2.0 的 AJAX 利劍 ~ Atlas Framework
  5. 【MM模块】Basic Invoice Verification 发票校验
  6. 帆软正则表达式定义规则
  7. 移动App的发展趋势
  8. SAP 中国本地化内容汇总
  9. 不同服务器之间进行传输
  10. REUSE_ALV_GRID_DISPLAY事件子过程和cl_gui_grid类的事件对应关系