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()