day15 類的運(yùn)算符拷姿,和內(nèi)存管理機(jī)制

1.什么是運(yùn)算符重載

python中所有的類型都是類惭载,所有的數(shù)據(jù)都是類的對象

python中使用運(yùn)算符的時候,實(shí)質(zhì)會去調(diào)用這個運(yùn)算符對應(yīng)的魔法方法;
類的對象是否支持相應(yīng)的運(yùn)算符响巢,就看這個類中有沒有實(shí)現(xiàn)對應(yīng)的魔法方法.

class Animal:
    def shout(self):
        print('叫喚')
    pass

class Dog(Animal):
    def shout(self):
        print('汪汪')
    pass

class Cat(Animal):
    def shout(self):
        print('喵喵')
    pass

class Student:
    def __init__(self, name, age=0, score=0):
        self.name = name
        self.age = age
        self.score = score

    def __repr__(self):
        return str(self.__dict__)

    # __add__是+的魔法方法描滔,self代表+前面的數(shù)據(jù),other代碼+后面的數(shù)據(jù)踪古,返回值是運(yùn)算結(jié)果
    def __add__(self, other):
        # self = stu1, other = stu2
        return self.age+other.age

    # *的魔法方法
    def __mul__(self, other):
        stus = []
        for _ in range(other):
            stus.append(copy.copy(self))
        return stus

    # >的魔法方法
    # 注意: >和<的魔法方法只需要實(shí)現(xiàn)一個含长,另外一個自動支持
    def __gt__(self, other):
        return self.score > other.score


def main():
    stu1 = Student('小明', 20, 80)
    stu2 = Student('小花', 18, 90)
    # stu1+stu2 --> stu1.__add__(stu2)
    print('兩個學(xué)生相加:', stu1 + stu2)
    students = stu1*4
    students[0].name = '小花'
    print(students)

    print(stu1 > stu2)
    print(stu1 < stu2)

    students2 = [stu1, stu2]
    students2.sort()

    # print(students2)

    print(max(students2))



if __name__ == '__main__':
    main()

2.內(nèi)存

1.內(nèi)存可以分為棧區(qū)間和堆區(qū)間,棧上的內(nèi)存是系統(tǒng)自動開辟自動釋放伏穆,堆上的內(nèi)存需要手動開辟拘泞、手動釋放。

在python中堆上的內(nèi)存空間會通過python提供的內(nèi)存管理機(jī)制自動管理

2.內(nèi)存管理機(jī)制

1)內(nèi)存開辟
python中所有的變量都是保存在棧區(qū)間的枕扫,并且所有的變量保存的都是數(shù)據(jù)的地址陪腌;所有的對象(數(shù)據(jù))都是保存在堆區(qū)間的。

變量賦值的原理: 先在堆中開辟空間將數(shù)據(jù)存起來,然后再將地址返回給變量(通用)诗鸭;
如果數(shù)據(jù)是數(shù)字或者字符串染簇,會先在內(nèi)存中查看之前是否已經(jīng)存儲過這個輸入,
如果存儲過直接返回之前的地址强岸,沒有存儲過才會開辟空間存數(shù)據(jù)

2)內(nèi)存的釋放(垃圾回收機(jī)制)
python中的每一個對象都有一個默認(rèn)的屬性來保存這個對象的引用計數(shù)锻弓。
(看這個對象的地址被多個變量或者數(shù)據(jù)存儲;如果一個變量存了一個對象的地址请唱,我們就說這個變量是這個對象的引用)
一個對象是否銷毀就看這個對象的引用計數(shù)是否為0弥咪,只要為0就會被銷毀

getrefcount(對象) -> 獲取對象的引用計數(shù)

from sys import getrefcount


def main():
    # 1.變量賦值原理
    list1 = {'a': 10}
    list2 = {'a': 10}
    print(id(list1), id(list2))

    num1 = 'abc'
    num2 = 'abc'
    print(id(num1), id(num2))

    # 2.引用計數(shù)
    list3 = [1, 2, 3]
    list4 = list3
    print(getrefcount(list3), getrefcount(list4))
    list4 = 10
    print(getrefcount(list3))
    list3 = 100
    print(getrefcount(list3))

    # def yt_getcount(obj):
    #     # obj = list3
    #     return 獲取obj的引用計數(shù)


if __name__ == '__main__':
    main()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市十绑,隨后出現(xiàn)的幾起案子聚至,更是在濱河造成了極大的恐慌,老刑警劉巖本橙,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扳躬,死亡現(xiàn)場離奇詭異,居然都是意外死亡甚亭,警方通過查閱死者的電腦和手機(jī)贷币,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亏狰,“玉大人役纹,你說我怎么就攤上這事∠就伲” “怎么了促脉?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長策州。 經(jīng)常有香客問我瘸味,道長,這世上最難降的妖魔是什么够挂? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任旁仿,我火速辦了婚禮,結(jié)果婚禮上孽糖,老公的妹妹穿的比我還像新娘枯冈。我一直安慰自己,他們只是感情好办悟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布尘奏。 她就那樣靜靜地躺著,像睡著了一般誉尖。 火紅的嫁衣襯著肌膚如雪罪既。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音琢感,去河邊找鬼丢间。 笑死,一個胖子當(dāng)著我的面吹牛驹针,可吹牛的內(nèi)容都是我干的烘挫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼柬甥,長吁一口氣:“原來是場噩夢啊……” “哼饮六!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苛蒲,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卤橄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后臂外,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窟扑,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年漏健,在試婚紗的時候發(fā)現(xiàn)自己被綠了嚎货。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔫浆,死狀恐怖殖属,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓦盛,我是刑警寧澤洗显,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站谭溉,受9級特大地震影響墙懂,放射性物質(zhì)發(fā)生泄漏橡卤。R本人自食惡果不足惜扮念,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碧库。 院中可真熱鬧柜与,春花似錦、人聲如沸嵌灰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沽瞭。三九已至迁匠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背城丧。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工延曙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亡哄。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓枝缔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚊惯。 傳聞我的和親對象是個殘疾皇子愿卸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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