Day15-總結(jié)

01-多繼承

1.多繼承:

讓一個類同時繼承多個類
注意:實(shí)際開發(fā)一般不使用

class Animal:
    num = 1
    def __init__(self,name = '',age = 0 , color = ''):
        self.name = name
        self.age = age
        self.color = color
    def show_info(self):
        print('%s%s%s%s'%(self.name,self.age,self.color))

class Fly:
    info = '飛'
    def __init__(self,distance,speed):
        self.distance =distance
        self.speed = speed

    @staticmethod
    def show():
        print('會飛!')

class Bird(Animal,Fly):
    pass

# 兩個類的字段能繼承
print(Bird.num,Bird.info)
Bird.show()

# 對象屬性只能繼承第一個類的對象屬性
bird = Bird()
print(bird.name)

2.多態(tài):

類的特點(diǎn):封裝,繼承,多態(tài)
封裝:可以對多條數(shù)據(jù)(屬性)多個功能(方法)進(jìn)行封裝
繼承:可以讓一個類擁有另外一個屬性和方法
多態(tài):有繼承就有多態(tài)(一個事物的多種形態(tài))

02-運(yùn)算符重載

python中的函數(shù)不支持重載

def fun1():
    pass
def fun2();
    pass

最終只保留最后一個fun1,前面的會被覆蓋

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

python中使用運(yùn)算符的時候,實(shí)質(zhì)是在調(diào)用相應(yīng)的魔法方法。(python中每個運(yùn)算符對應(yīng)一個魔法方法)

運(yùn)算符重載:在不同的類中實(shí)現(xiàn)同一個運(yùn)算符對應(yīng)的魔法方法,來讓類的符對象支持相應(yīng)的運(yùn)算

03-內(nèi)存管理機(jī)制

1.堆和棧

內(nèi)存區(qū)域中分堆區(qū)間和棧區(qū)間:棧區(qū)間的內(nèi)存的開辟和釋放是自動的,堆區(qū)間內(nèi)存是手動開辟釋放;內(nèi)存的管理,管理的是堆區(qū)間的內(nèi)存;

2.數(shù)據(jù)的存儲

a.

python中所有的數(shù)據(jù)都是對象,都是保存在堆中的

b.

python中的所有的變量的存儲的都是存在堆中的數(shù)據(jù)的地址。存了對象的地址的變量又叫對象的引用

c.

默認(rèn)情況下創(chuàng)建對象就會在堆 中去開辟空間存儲數(shù)據(jù),并且將地址作為返回值;如果對象是數(shù)據(jù),字符串會做緩存,而且使用的時候會先去緩存中看之前有沒有存過,如果頭就直接返回之前的數(shù)據(jù)的地址,沒有才開辟新的空間存儲數(shù)據(jù)

3.數(shù)據(jù)的銷毀

python中通過垃圾回收機(jī)制來管理內(nèi)存的釋放

原理:看一個對象是否銷毀,就看這個對象的引用計數(shù)是否為0,不為0就不銷毀

引用計數(shù):對象的引用個數(shù)
注意:垃圾回收其實(shí)就是回收引用計數(shù)為0的對象,但是系統(tǒng)不會時時刻刻的檢測引用計數(shù)是否為0,而是隔一段時間檢測一次,如果檢測到垃圾就回收

from sys import getrefcount
"""
getrefcount(對象) - 獲取指定的對象的引用計數(shù)
"""

4.增加引用計數(shù):使用變量存對象地址

list1 = [1]  # 對象[1]的引用計數(shù)是1
print(getrefcount(list1))
list2 = list1 # 對象[1]的引用計數(shù)是2
print(getrefcount(list1))
list3 = [list1,100] # 對象[1]的引用計數(shù)是3
print(getrefcount(list1))

5.減少引用計數(shù)

a.刪除引用

b.讓當(dāng)前對象的引用成為別的對象引用

del list3[0]
print(getrefcount(list1))
list2 = 100
print(getrefcount(list1))

04-游戲最小系統(tǒng)

import pygame
#1.創(chuàng)建游戲窗口
# 創(chuàng)建游戲窗口
"""
set_mode(窗口大小) - 窗口大小是一個元祖,有兩個元素,width height
set_mode((寬度,高度))
寬度和高度的單位是像素
"""
pygame.init()
window =pygame.display.set_mode((600,600))
# 將窗口填充成指定的顏色
"""
fill(顏色)
計算機(jī)顏色 :計算機(jī)三原色 - 紅、綠、藍(lán)(rgb)
            顏色值就是由三個數(shù)字組成,分別代表紅、綠、藍(lán),數(shù)字范圍:0 - 255
python中的顏色是一個元祖,元祖中有三個顏色,分別是r,g,b
(255,255,255) - 白色
(0,0,0) - 黑色
(255,0,0) - 紅色
(0,255,0) - 綠色
"""
window.fill((255,255,255))
# 將窗口展示到顯示設(shè)備上
pygame.display.flip()
# 3.創(chuàng)建游戲循環(huán)
while True:
    # 4.檢測事件
    for event in pygame.event.get():
    # 區(qū)分不同事件,做出不一樣的反應(yīng)
     if event.type == pygame.QUIT:
         exit()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容