范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

详解Python中的newinitcall三个特殊方法

  __new__: 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self)
  __init__ : 对象的初始化, 是一个实例方法,第一个参数是self。
  __call__ : 对象可call,注意不是类,是对象。
  先有创建,才有初始化。即先__new__,而后__init__。
  上面说的不好理解,看例子。
  1.对于__new__class Bar(object):    pass    class Foo(object):    def __new__(cls, *args, **kwargs):      return Bar()    print Foo()
  可以看到,输出来是一个Bar对象。
  __new__方法在类定义中不是必须写的,如果没定义,默认会调用object.__new__去创建一个对象。如果定义了,就是override,可以custom创建对象的行为。
  聪明的读者可能想到,既然__new__可以custom对象的创建,那我在这里做一下手脚,每次创建对象都返回同一个,那不就是单例模式了吗?没错,就是这样。可以观摩《飘逸的python - 单例模式乱弹》
  定义单例模式时,因为自定义的__new__重载了父类的__new__,所以要自己显式调用父类的__new__,即object.__new__(cls, *args, **kwargs),或者用super()。,不然就不是extend原来的实例了,而是替换原来的实例。
  2.对于__init__
  使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。例如:# -*- coding: utf-8 -*-  class Person(object):   """Silly Person"""    def __init__(self, name, age):     self.name = name     self.age = age    def __str__(self):     return "" % (self.name, self.age)  if __name__ == "__main__":   piglei = Person("piglei", 24)   print piglei
  这样便是__init__最普通的用法了。但__init__其实不是实例化一个类的时候第一个被调用 的方法。当使用 Persion(name, age) 这样的表达式来实例化一个类时,最先被调用的方法 其实是 __new__ 方法。
  3.对于__call__
  对象通过提供__call__(slef, [,*args [,**kwargs]])方法可以模拟函数的行为,如果一个对象x提供了该方法,就可以像函数一样使用它,也就是说x(arg1, arg2...) 等同于调用x.__call__(self, arg1, arg2) 。模拟函数的对象可以用于创建防函数(functor) 或代理(proxy).class Foo(object):    def __call__(self):    		print("__call__")   f = Foo()#类Foo可call  f()#对象f可call  输出结果__call__
  总结,在Python中,类的行为就是这样,__new__、__init__、__call__等方法不是必须写的,会默认调用,如果自己定义了,就是override,可以custom。既然override了,通常也会显式调用进行补偿以达到extend的目的。
  这也是为什么会出现"明明定义def _init__(self, *args, **kwargs),对象怎么不进行初始化"这种看起来诡异的行为。(注,这里_init__少写了个下划线,因为__init__不是必须写的,所以这里不会报错,而是当做一个新的方法_init__)

郭明錤iPhone16将采用屏下镜头和面部识别系统成为真全面屏手机郭明錤iPhone16将采用屏下镜头和面部识别系统成为真全面屏手机科创板日报21日讯,天风国际分析师郭明錤在社交媒体上预测,苹果公司可能在2024年推出其第一款真全屏手机,也就是彻马斯克称自己没房没游艇也不度假!在朋友家轮流住,网友首富跟我一样都是三无产品中国经济周刊经济网讯据外媒报道,近日马斯克在接受TED采访时,被问到对于很多人反对亿万富豪的看法,他表示如果我每年光是个人消费就达数十亿美元,这肯定会出大问题,事实并非如此。如果我小米12Ultra多重爆料骁龙8PLUS1T存储徕卡联名数码闲聊站发文主图片背后的机会主要是用双手拍摄照片和视频,而高质量的图片会占用大量内存空间,所以你想要1TB。。这条消息被广泛认为暗示了Mi12ultra的规格,透露它可能配备1T双品网购节期间如何保障快件顺利送达?国家邮政局答封面新闻封面新闻记者滕晗第四届双品网购节暨非洲好物网购节将于4月28日至5月12日举办。4月22日,在商务部举行的专题新闻吹风会上,国家邮政局市场监管司副司长边作栋在回答封面新闻记者提问时今天正式停运!网友爷青结今天(4月20日)QQ堂今日正式停运的消息引起不少人的关注许多网友说自己的青春,结束了今天(4月20日)腾讯旗下休闲娱乐游戏QQ堂正式停止中国大陆地区的运营这款游戏在20日11点关游戏玩家用投影仪如何挑?市售十款热门游戏投影仪选购攻略废话不多说,马上上干货。随着家用投影仪的逐渐普及(说人话,就是现在的人越来越懂得享受),应用也越来越多元化(现在的投影仪不光只是看片子,还得要看电视玩主机游戏),不少80后,90后全球首个GaaS平台GameSpace上线游戏行业进入一键链改时代e公司讯,22日,全球首个提供GaaS服务(GameFiasaService)平台GameSpace正式上线,并宣布从头部风投基金游戏上市公司与加密交易平台处获得超过700万美元的造型轻巧时尚佩戴舒适不压迫,百元价位也有优秀的游戏耳机前几天有学生网友私信我,咨询有没有性价比很高的游戏耳机,想了想,推荐这款达尔优EH722游戏耳机,下面咱们来看看这款时尚漂亮的耳机。达尔优dareuEH722精英版129购买首先是户外直播圈刮起热成像风,探秘手机热成像黑科技霸屏背后齐鲁壹点记者闫丽君通讯员曹晓燕21日,记者从烟台艾睿光电科技有限公司获悉,最近,一款名为天眼系列的手机热成像在各大直播平台迅速蹿红。越来越多的户外达人,开始使用天眼热成像进行直播和新手程序员如何解决工作中遇到的问题二十年经验的程序员分享下每天的工作流程。分情况代码出错,抛exception。把控制台上的出错信息,比如exception的详细信息全拷贝出来,放到浏览器栏里,不要加任何中文,去掉还记得腾讯老干妈事件吗,终于定夺了网友互联网是没有记忆的腾讯你放屁死去的记忆突然袭来!死去的记忆又开始向腾讯袭来,今早狐妹看到新闻冒充老干妈员工诈骗腾讯的案件二审宣判了!4月19日,贵阳市中级人民法院对三人冒充老干
升级鸿蒙系统后微信还能用吗?感谢您的阅读!手机升级鸿蒙系统之后,微信还能使用吗?其实这个问题讨论的是鸿蒙系统的生态问题。鸿蒙的生态问题也是必须或者是着重要解决的问题,如果不能够解决鸿蒙时代问题,那么对于未来的ios14。4对比14。6哪个好?感谢您的阅读!我反而会觉得IOS14。4系统要比IOS14。6系统的体验会更好。我们必须要知道ios14。6系统它确实解决了一些问题增加一些功能,但是这款系统依然会在我看来有一些缺选择电脑,你是颜值党还是配置党?就像做人一样,光有能力,但不修边幅,别人看了会生厌,自然无法融世,如果光修边幅,没有智慧,就像绣花枕头,外表漂亮,里面全是糟糠也不行呀,所以嘛,又要有能力,又要有体面,如此才能融入电视台是自负盈亏吗?电视台是自负盈亏的。媒体都是事业单位企业管理自收自支,当然媒体的营收中也有获得支持的部分。现在大家的阅读和收看都集中到了手机端,原先的报纸电台与电视台,都面临着全新的运营突围。移动如何看待华为官宣鸿蒙后各厂商的态度?华为鸿蒙系统,是中国人的操作系统,在万物互联的互联世界里,由政府机关做起,公务办事很行车站机场家电汽车医院一切都是鸿蒙系统,人们只要拿起鸿蒙系统的手机,就可以和生活息息相关的万物互告别滴滴,入手美团打车,大家怎么看?不要对美团抱太多信心。美团现在纵容司机刷数据。也就是为了达到融资的目的而已。根本就没想过长远发展。不过现在还在没证跑车的司机,其实想想,应了那句老话,可怜之人必有可恨之处。曾经做个华为云手机可以替代5nm或者3nm的高端旗舰手机吗?9月1号,华为宣布启动云手机的公开测试。云手机的概念立刻吸引了世人的眼球。有人说云手机能够让华为彻底摆脱缺乏高端芯片的困境,同时也可以甩开美国对华为的芯片封锁。因为不需要那么多复杂网购平台打假难?亚马逊斥巨资销毁逾200万件假货据美国有线电视新闻网商业新闻网站报道,亚马逊去年销毁了超过200万件疑似假货,这些赝品是由第三方卖家寄往其订单执行中心的,这是亚马逊网站打击假冒伪劣商品行动的一部分。当地时间5月1中国汽车销量连涨13个月!4月新能源车销量激增180据路透社近日报道中国汽车工业协会(CAAM)的数据显示,4月份中国汽车销量与去年同期相比增长8。6,且连续第13个月保持增长。报道称,中国是全球最大的汽车市场,引领该行业从新冠疫情外媒应用务实令中国机器人优势显现来源经济参考报全球工业机器人应用需求在新冠疫情期间持续扩大。外媒近期纷纷表示,中国企业拥有在细分场景的解决方案,不仅成为近期机器人领域的亮点,还有望在全球市场竞争中占据优势。俄罗斯中芯7nm还没消息,中国院士又呼吁放弃EUV,高端芯片路有多难?本文原创,请勿抄袭和搬运,违者必究中国院士多次表态国产芯片处在成熟工艺水平,相对来说,在28nm到90nm领域,中国有一定的参与感。只要稍微努力,实现这类成熟工艺制程的自给自足不成