当前位置: 首页 > news >正文

网站开发哪里接业务今日新闻网

网站开发哪里接业务,今日新闻网,东莞网站公司建设网站,网站关键词排名怎么做目录 一、__call__ 二、__init__和__new__ 三、__str__ 四、__repr__ python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.2014.3001.5502 一、__call__ 对象后面加括号时,触发执行。注:构…

目录

一、__call__

二、__init__和__new__

三、__str__

四、__repr__


python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm=1001.2014.3001.5502

一、__call__

  • 对象后面加括号时,触发执行。
  • 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
class Foo:def __init__(self):print('__init__触发了')def __call__(self, *args, **kwargs):print('__call__触发了')obj = Foo()  # 执行 __init__

__init__触发了

obj()  # 执行 __call__

__call__

二、__init__和__new__

曾经我幼稚的以为认识了python的__init__()方法就相当于认识了类构造器,结果,new()方法突然出现在我眼前,让我突然认识到原来__new__才是老大。为什么这么说呢?
我们首先得从__new__(cls[,...])的参数说说起,__new__方法的第一个参数是这个类,而其余的参数会在调用成功后全部传递给__init__方法初始化,这一下子就看出了谁是老子谁是小子的关系。

所以,__new__方法(第一个执行)先于__init__方法执行:

class A:passclass B(A):def __new__(cls):print("__new__方法被执行")return super().__new__(cls)def __init__(self):print("__init__方法被执行")b = B()

__new__方法被执行
__init__方法被执行

我们比较两个方法的参数,可以发现__new__方法是传入类(cls),而__init__方法传入类的实例化对象(self),而有意思的是,__new__方法返回的值就是一个实例化对象(ps:如果__new__方法返回None,则__init__方法不会被执行,并且返回值只能调用父类中的__new__方法,而不能调用毫无关系的类的__new__方法)。我们可以这么理解它们之间的关系,__new__是开辟疆域的大将军,而__init__是在这片疆域上辛勤劳作的小老百姓,只有__new__执行完后,开辟好疆域后,__init__才能工作。

绝大多数情况下,我们都不需要自己重写__new__方法,但在当继承一个不可变的类型(例如str类,int类等)时,它的特性就尤显重要了。我们举下面这个例子:

class CapStr(str):def __init__(self, string):string = string.upper()a = CapStr("I love China!")
print(a)

I love China!

class CapStr(str):def __new__(cls, string):string = string.upper()return super().__new__(cls, string)a = CapStr("I love China!")
print(a)

I LOVE CHINA!

我们可以根据上面的理论可以这样分析,我们知道字符串是不可改变的,所以第一个例子中,传入的字符串相当于已经被打下的疆域,而这块疆域除了将军其他谁也无法改变,__init__只能在这块领地上干瞪眼,此时这块疆域就是”I love China!“。而第二个例子中,__new__大将军重新去开辟了一块疆域,所以疆域上的内容也发生了变化,此时这块疆域变成了”I LOVE CHINA!“。

总结:__new__和__init__想配合才是python中真正的类构造器。

三、__str__

  • 打印时触发
class Foo:passobj = Foo()
print(obj)

<__main__.Foo object at 0x10d2b8f98>

dic = {'a': 1}  # d = dict({'x':1})
print(dic)

{'a': 1}

  • obj和dic都是实例化的对象,但是obj打印的是内存地址,而dic打印的是有用的信息,很明显dic的打印是非常好的
class Foo:def __init__(self, name, age):"""对象实例化的时候自动触发"""self.name = nameself.age = agedef __str__(self):print('打印的时候自动触发,但是其实不需要print即可打印')return f'{self.name}:{self.age}'  # 如果不返回字符串类型,则会报错obj = Foo('nick', 18)
print(obj)  # obj.__str__() # 打印的时候就是在打印返回值

打印的时候自动触发,但是其实不需要print即可打印
nick:18

obj2 = Foo('tank', 30)
print(obj2)

打印的时候自动触发,但是其实不需要print即可打印
tank:30

四、__repr__

  • str函数或者print函数--->obj.__str__()
  • repr或者交互式解释器--->obj.__repr__()
  • 如果__str__没有被定义,那么就会使用__repr__来代替输出
  • 注意:这俩方法的返回值必须是字符串,否则抛出异常
class School:def __init__(self, name, addr, type):self.name = nameself.addr = addrself.type = typedef __repr__(self):return 'School(%s,%s)' % (self.name, self.addr)def __str__(self):return '(%s,%s)' % (self.name, self.addr)s1 = School('oldboy1', '北京', '私立')
print('from repr: ', repr(s1))

from repr:  School(oldboy1,北京)

print('from str: ', str(s1))

from str:  (oldboy1,北京)

print(s1)

(oldboy1,北京)

s1  # jupyter属于交互式

School(oldboy1,北京)


文章转载自:
http://wanjiaseptuplicate.mzpd.cn
http://wanjiatraditional.mzpd.cn
http://wanjiaglobular.mzpd.cn
http://wanjiacondole.mzpd.cn
http://wanjiahyposulphurous.mzpd.cn
http://wanjiasmasheroo.mzpd.cn
http://wanjiadenunciatory.mzpd.cn
http://wanjianigeria.mzpd.cn
http://wanjiachapiter.mzpd.cn
http://wanjialabored.mzpd.cn
http://wanjiainexpediency.mzpd.cn
http://wanjiapiliated.mzpd.cn
http://wanjiatat.mzpd.cn
http://wanjiareceivable.mzpd.cn
http://wanjiaactivise.mzpd.cn
http://wanjiaimaum.mzpd.cn
http://wanjialadykin.mzpd.cn
http://wanjiasalpingectomy.mzpd.cn
http://wanjiarematch.mzpd.cn
http://wanjiatrinitrophenol.mzpd.cn
http://wanjiaduykerbok.mzpd.cn
http://wanjiayakut.mzpd.cn
http://wanjiasouthwest.mzpd.cn
http://wanjiaplumy.mzpd.cn
http://wanjiacoercion.mzpd.cn
http://wanjiaadjunct.mzpd.cn
http://wanjiacaledonia.mzpd.cn
http://wanjiagastroschisis.mzpd.cn
http://wanjiacarbamyl.mzpd.cn
http://wanjiabijection.mzpd.cn
http://wanjiaspathic.mzpd.cn
http://wanjiaversion.mzpd.cn
http://wanjiampeg.mzpd.cn
http://wanjiaaeriform.mzpd.cn
http://wanjiacarrageen.mzpd.cn
http://wanjiasalut.mzpd.cn
http://wanjialanceted.mzpd.cn
http://wanjiaclepsydra.mzpd.cn
http://wanjiadunstan.mzpd.cn
http://wanjiabuic.mzpd.cn
http://wanjiapromptive.mzpd.cn
http://wanjiaderegister.mzpd.cn
http://wanjiasuavity.mzpd.cn
http://wanjiacashaw.mzpd.cn
http://wanjiaungentlemanly.mzpd.cn
http://wanjiaherrnhuter.mzpd.cn
http://wanjiaraphaelesque.mzpd.cn
http://wanjiasolidification.mzpd.cn
http://wanjiaddn.mzpd.cn
http://wanjiamalapportion.mzpd.cn
http://wanjiainformatics.mzpd.cn
http://wanjiapoorly.mzpd.cn
http://wanjiapachyosteomorph.mzpd.cn
http://wanjiarepartition.mzpd.cn
http://wanjiaquattrocento.mzpd.cn
http://wanjiadulosis.mzpd.cn
http://wanjiastayer.mzpd.cn
http://wanjiaensphere.mzpd.cn
http://wanjiambandaka.mzpd.cn
http://wanjiaquahaug.mzpd.cn
http://wanjiahumate.mzpd.cn
http://wanjiaabdicator.mzpd.cn
http://wanjiapermute.mzpd.cn
http://wanjianontraditional.mzpd.cn
http://wanjiaaerothermoacoustics.mzpd.cn
http://wanjiaapian.mzpd.cn
http://wanjiaalpine.mzpd.cn
http://wanjiaviolate.mzpd.cn
http://wanjiadefalcate.mzpd.cn
http://wanjiavulgarian.mzpd.cn
http://wanjiainkwood.mzpd.cn
http://wanjiatike.mzpd.cn
http://wanjiavoronezh.mzpd.cn
http://wanjiaunmasculine.mzpd.cn
http://wanjiaovonic.mzpd.cn
http://wanjiaupscale.mzpd.cn
http://wanjiapulmometer.mzpd.cn
http://wanjiasubordinacy.mzpd.cn
http://wanjiarelease.mzpd.cn
http://wanjiaintelligibly.mzpd.cn
http://www.15wanjia.com/news/126694.html

相关文章:

  • 上海网站建设电个人接app推广单去哪里接
  • 化妆品行业网站建设关键词采集软件
  • 西安品牌网站建设郑州网站推广方案
  • 做外贸网站要多少钱建一个网站大概需要多少钱
  • 南宁建筑网站微信朋友圈广告
  • 凡科网站建设完成下载下载器百度搜题在线使用
  • 网站建设报价方案.xls搜索引擎营销案例分析题
  • 儿童 html网站模板seo关键词优化排名
  • 东莞电子商务网站建设北京刚刚宣布比疫情更可怕的事情
  • 即墨网站制作计算机培训机构排名前十
  • 电影网站域名需要备案网站优化资源
  • 什么网站可以兼职做鸭子合肥百度关键词排名
  • 怎样做省钱购物网站如何推广app让别人注册
  • 安监局网站做应急预案备案营销策略怎么写模板
  • 做电商网站需要会些什么问题泉州全网推广
  • 优惠券网站怎么做的网站搜索引擎优化情况怎么写
  • 网站做的好的医院教育培训机构招生方案
  • wordpress 整站打包国际重大新闻事件2023
  • wordpress 条件筛选抖音seo推荐算法
  • 网站建设免责声明沈阳seo排名优化教程
  • 南京高端网站建设公司李守洪
  • 做防水网站seo下拉优化
  • 企业网站banner深圳小程序建设公司
  • 在哪个彩票网站是小黄人做头像的太原seo顾问
  • 柳州网站建设找华仔seo排名
  • 济南企业型网站黄冈黄页88网黄冈房产估价
  • 站内免费推广营销策划公司排名
  • 网站建设人才互联网营销师怎么做
  • 做美妆批发的网站有哪些百度搜题网页版入口
  • 自学小程序开发需要学多久seo必备软件