一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 詳解Python中的__new__()方法的使用

詳解Python中的__new__()方法的使用

2020-06-03 09:42一流木 Python

本文主要介紹了Python中的__new__()方法的使用的基本知識,本文中給出了基于Python2.x的代碼實例,需要的朋友可以參考一下

先看下object類中對__new__()方法的定義:

?
1
2
3
4
5
class object:
  @staticmethod # known case of __new__
  def __new__(cls, *more): # known special case of object.__new__
    """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
    pass


object將__new__()方法定義為靜態(tài)方法,并且至少需要傳遞一個參數(shù)cls,cls表示需要實例化的類,此參數(shù)在實例化時由Python解釋器自動提供。

我們來看下下面類中對__new__()方法的實現(xiàn):

?
1
2
3
4
5
6
7
8
class Demo(object):
  def __init__(self):
    print '__init__() called...'
  def __new__(cls, *args, **kwargs):
    print '__new__() - {cls}'.format(cls=cls)
    return object.__new__(cls, *args, **kwargs)
if __name__ == '__main__':
  de = Demo()


輸出:

?
1
2
__new__() - <class '__main__.Demo'>
__init__() called...


發(fā)現(xiàn)實例化對象的時候,調(diào)用__init__()初始化之前,先調(diào)用了__new__()方法

__new__()必須要有返回值,返回實例化出來的實例,需要注意的是,可以return父類__new__()出來的實例,也可以直接將object的__new__()出來的實例返回。

__init__()有一個參數(shù)self,該self參數(shù)就是__new__()返回的實例,__init__()在__new__()的基礎(chǔ)上可以完成一些其它初始化的動作,__init__()不需要返回值。

若__new__()沒有正確返回當(dāng)前類cls的實例,那__init__()將不會被調(diào)用,即使是父類的實例也不行。

我們可以將類比作制造商,__new__()方法就是前期的原材料購買環(huán)節(jié),__init__()方法就是在有原材料的基礎(chǔ)上,加工,初始化商品環(huán)節(jié)。

實際應(yīng)用過程中,我們可以這么使用:

?
1
2
3
4
5
6
7
8
9
class LxmlDocument(object_ref):
  cache = weakref.WeakKeyDictionary()
  __slots__ = ['__weakref__']
  def __new__(cls, response, parser=etree.HTMLParser):
    cache = cls.cache.setdefault(response, {})
    if parser not in cache:
      obj = object_ref.__new__(cls)
      cache[parser] = _factory(response, parser)
    return cache[parser]


該類中的__new__()方法的使用,就是再進(jìn)行初始化之前,檢查緩存中是否存在該對象,如果存在則將緩存存放對象直接返回,如果不存在,則將對象放至緩存中,供下次使用。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天使萌痴汉在线中文字幕 | 亚洲人成在线观看一区二区 | 97涩色| 日韩毛片免费在线观看 | 成人国产在线视频 | 香蕉久久网| 久久久久久免费观看 | h日本漫画全彩在线观看 | 亚洲欧美日韩国产一区二区精品 | 免费一级毛片在线播放放视频 | 青草青草视频2免费观看 | 麻豆天美精东果冻传媒在线 | 亚洲欧美国产精品完整版 | 无限观看社区在线视频 | 日本视频观看 | 糖心在线观看网 | 国产资源中文字幕 | 青青草久| 黄网在线观看免费网站台湾swag | xxxxxx日本处大片免费看 | 亚洲精品久久啪啪网站成年 | 国产成人综合视频 | sp啪啪调教打屁股网站 | 清清草在线视频 | 非洲黑人bbwbbwbbw | 国产伦精品一区二区三区免费迷 | 我要看免费毛片 | 午夜影院小视频 | 91大神在线精品播放 | 韩国美女豪爽一级毛片 | www.5151淫| 亚洲国产在线99视频 | 欧美日韩高清完整版在线观看免费 | 免费在线影院 | 2021国产麻豆剧传媒剧情最新 | 国产精品一区二区国产 | 色综合天天网 | 青青草高清视频 | 高跟丝袜麻麻求我调教 | 国产成人无精品久久久久国语 | avtt天堂在线|