3月29號學習知識點梳理

類的相關知識點梳理

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__函數!!!






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章