類的相關知識點梳理
1. 類: 實體類, 業務類, 界面(UI)類
(1)定義類:
1) 類的對象的構造方法
class Stu(object):
def __init__(self):
print(‘類的對象的構造方法’)
2)類的方法
@classmethod
def list_stus(cls):
print(‘類的方法’)
3)類的靜態方法
@staticmethod
def addStu(stu):
print(‘類的靜態方法’)
類中的方法有三種類型: 對象方法, 類方法,類的靜態方法
2. 對象的創建
類名(初始化參數) : Stu(), 在內存的堆中開闢一塊內存區域(鏈表結構), 創建對象之後,返回對象所在內存區域的首地址。對於返回的首地址,可以賦給一個變量,這個變量就變成了對象的引用。通過對象的引用可以訪問對象的屬性和方法。 創建對象時, 默認調用類的構造方法__init__(self)。
3. 對象的銷燬
1)del 對象引用名,刪除對象引用指向的內存區域, 默認會調用類的析構方法__del__(self)
2) 如果刪除的對象中存在其它引用,則不會刪除內存區域。
舉例如下:
s = Stu()
b = s
del s # 不會調用類的__del__()方法
del b # 會調用類的__del__()方法
4. 類對象之間的關聯關係
舉例如下:
class Card:
def__init__(self,number,money,passwd):
self.number = number
self.money = money
self.passwd = passwd
def show(self):
print(‘—card show()—’)
class User:
def__init__(self,name,bank_card)
self.name = name
self.bank_card = bank_card
#用戶和銀行卡是一對一的關係
def __del__(self):
print(‘--User--del’)
5.對象之間的引用:
card = Card(3, 0, ’10010’)
user = User(‘Judy’, card)
del card # card 引用名從棧中刪除了
card.number # 報card沒有聲明或簽名。
user.bank_card.numer # 可以輸出,顯示用戶的銀行卡的卡號
user.bank_card.show() # 可以輸出, 使用對象的引用,可訪問對象的屬性和執行對象的方法
del user # 是否執行 User類中的__del__函數?
可以的,因爲棧中user的指向堆中的類User,刪除棧中的對象user,那麼堆中的User沒有了引用,系統便可以回收堆中的User,所以執行del user ,就等同於執行了類中User類的__del__函數!!!