python------new方法及其他

  • 一隔箍、單例模式
  • new與init的區(qū)別:
  • __new:創(chuàng)建實例對象時調(diào)用的構(gòu)造方法
  • init:初始化方法谓娃,用于設(shè)置實例的相關(guān)屬性
  • python創(chuàng)建實例時,會先調(diào)用new構(gòu)造方法蜒滩,然后使用init進(jìn)行實例初始化滨达。
  • 我們可以通過new來影響實例的創(chuàng)建,從而實現(xiàn)單例俯艰。
class A(object):
    __instance = None
    def __new__(cls,*args,**kwargs):
        if not cls. __instance:
            cls.__instance = super().__new__(cls,*args,**kwargs)
        return cls.__instance

a = A()
b = A()
print(a == b)
print(id(a) == id(b))

上面代碼中捡遍,聲明了一個私有類變量__instance,當(dāng)__instance不為None時,代表系統(tǒng)中已有實例竹握,直接返回該實例稽莉,若__instance為None時,表示系統(tǒng)中還沒有該類實例,則創(chuàng)建新實例并返回污秆。

二劈猪、私有化

xx :公開屬性

class Test(object):
    def __init__(self):
        #這是一個公開屬性
        self.num = 100

from a import *
test = Test()
print(test.num)

_xx :模塊內(nèi)可以訪問的屬性這個的作用是該屬性只能在當(dāng)前模塊中使用,出了模塊及不能使用

class Test(object):
    def __init__(self):
        #這是一個模塊屬性
        self._num = 100

test = Test()
print(test._num)

__xx :通常是類的私有屬性

class Test(object):
    def __init__(self):
        #這是一個私有屬性
        self.__num = 100
#當(dāng)前模塊中Test類可以訪問
  • 三、==和is
>>> a = 1
>>> b = 1.0
>>> a is b
False
>>> a == b
True
>>> id(a)
12777000
>>> id(b)
14986000
>>> a = 1
>>> b = 1
>>> a is b
True
>>> a == b
True
>>> id(a)
12777000
>>>id(b)
12777000

  • 四良拼、深拷貝和淺拷貝
    淺拷貝
    淺拷貝是對于一個對象的頂層拷貝
    通俗的理解是:拷貝了引用战得,并沒有拷貝內(nèi)容
In [10]: a = [11,22,33]

In [11]: b = a

In [12]: id(a)
Out[12]: 140343572333832

In [13]: id(b)
Out[13]: 140343572333832

In [14]: a[0] = 'aa'

In [15]: a
Out[15]: ['aa', 22, 33]

In [16]: b
Out[16]: ['aa', 22, 33]

當(dāng)b = a時,實際上是將a列表的內(nèi)存地址賦值給了b庸推,那么變量a與變量b指向的是同一內(nèi)存地址常侦!

深拷貝
深拷貝是對于一個對象所有層次的拷貝(遞歸)

In [17]: import copy

In [18]: c = copy.deepcopy(a)

In [19]: id(a)
Out[19]: 140343572333832

In [20]: id(c)
Out[20]: 140343572336840

In [21]: a
Out[21]: ['aa', 22, 33]

In [22]: c
Out[22]: ['aa', 22, 33]

In [23]: a[0] = 11

In [24]: a
Out[24]: [11, 22, 33]

In [25]: c
Out[25]: ['aa', 22, 33]

  • 深拷貝不僅拷貝引用還拷貝值,所以內(nèi)存地址不一樣贬媒!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末聋亡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子际乘,更是在濱河造成了極大的恐慌坡倔,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脖含,死亡現(xiàn)場離奇詭異罪塔,居然都是意外死亡,警方通過查閱死者的電腦和手機养葵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門征堪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人关拒,你說我怎么就攤上這事佃蚜。” “怎么了着绊?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵谐算,是天一觀的道長。 經(jīng)常有香客問我畔柔,道長,這世上最難降的妖魔是什么臣樱? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任靶擦,我火速辦了婚禮,結(jié)果婚禮上雇毫,老公的妹妹穿的比我還像新娘玄捕。我一直安慰自己,他們只是感情好棚放,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布枚粘。 她就那樣靜靜地躺著,像睡著了一般飘蚯。 火紅的嫁衣襯著肌膚如雪馍迄。 梳的紋絲不亂的頭發(fā)上福也,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音攀圈,去河邊找鬼暴凑。 笑死,一個胖子當(dāng)著我的面吹牛赘来,可吹牛的內(nèi)容都是我干的现喳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼犬辰,長吁一口氣:“原來是場噩夢啊……” “哼嗦篱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幌缝,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤灸促,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狮腿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腿宰,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年缘厢,在試婚紗的時候發(fā)現(xiàn)自己被綠了吃度。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡贴硫,死狀恐怖椿每,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情英遭,我是刑警寧澤间护,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站挖诸,受9級特大地震影響汁尺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜多律,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一痴突、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狼荞,春花似錦辽装、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春拓巧,著一層夾襖步出監(jiān)牢的瞬間斯碌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工玲销, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留输拇,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓贤斜,卻偏偏與公主長得像策吠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瘩绒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容