天天看點

python 類定義_Python面向對象之封裝類

# 封裝:将屬性和方法封裝到類中,通過構造類的對象來實作功能

# 在面向對象的程式設計過程中有兩個重要概念:類(class)和對象(object,也被稱為執行個體,instance),其中類是某一批對象的抽象,可以把類了解成某種概念;對象才是一個具體存在的實體。

# 定義類的關鍵字: class

'''

文法

class ClassName:

      語句塊

類中包含屬性和方法

    屬性直接編寫

    方法就是函數,且這個函數第一個參數預設是self

類的命名

    駝峰式命名

    首字母大寫,以後的每個單詞的首字母均大寫

    不要使用中文,空格,特殊字元,關鍵字,保留字

屬性和方法命名

小寫字母,以後的每個單詞前使用下劃線連接配接 a_b

Python 的類大緻有如下作用

定義變量;

建立對象;

派生子類;

'''

# 為什麼會有類:比如我們要形容一個學生,這個學生學習很多門課程,如果每門課程都用一個變量去形容(或使用字典,清單去描述),那麼會顯得太零散,而當我們要形容的學生太多,就需要有很多變量去描述,為了解決這個問題,便有了類。我們可以給每個學生定義一個類,将這個學生相關的全部放入到這個類中

# 定義一個不包含任何類變量和方法,這個類相當于一個空類,使用 pass 語句作為占位符,空類沒有太大的實際意義

class Empty:

      pass

# 定義一個類

class Student:

    # 類屬性

    name = None

    # 方法,函數

    def act(self):

        print("跳舞")

# 對象建立

a = Student()

print(a)

print(type(a))

print(a.name)

# 操作屬性,設定屬性

a.name = "Tony"

# 擷取屬性

print(a.name)

# 調用對象的方法

# 類後面的括号代表建立對象,函數後面的括号代表調用、執行

a.act()

python 類定義_Python面向對象之封裝類

# 構造函數 __init__

# Python 中很多以雙下劃線開頭、雙下劃線結尾的方法,都具有特殊的意義

# 構造方法是一個類建立對象的根本途徑,是以 Python 還提供了一個功能:如果開發者沒有為該類定義任何構造方法,那麼 Python 會自動為該類定義一個隻包含一個 self 參數的預設的構造方法

#與函數類似的是,Python 也允許為類定義說明文檔,該文檔同樣被放在類聲明之後、類體之前

# 對象屬性和類屬性

class Students:

    '這是Python定義的一個Students類,類說明'

# 類變量,被類和對象共有

    name = None

    def __init__(self,a_name):

        # 成員變量,對象變量,對象獨有的

        self.a_name = a_name

   # 下面定義了一個act方法

    def act(self):

        print("跳舞")

a = Students (a_name="Linda")

a.name = "Tom"

print(a.name)

print(a.a_name)

b = Students (a_name="Diana")

print(b.a_name)

print(b.name)

Students.name = "Karl"

print(a.name)

print(b.name)

c = Students(a_name="Lisa")

print(c.name)

Students.a_name = "Jack"

print(Students.a_name)

print(a.a_name)

print(b.a_name)

print(c.a_name)

python 類定義_Python面向對象之封裝類

'''

總結

屬性是類的,也是這個類所有執行個體的,其執行個體都可以通路到;

是執行個體的,就是這個執行個體自己的,通過類通路不到

類變量是屬于類的變量,這個類的所有執行個體可以共享這個變量

對象(執行個體或類)可以動态的給自己增加一個屬性(指派即定義一個新屬性)

執行個體.dict[變量名]和執行個體.變量名都可以通路到自己的屬性(但兩種通路有本質上的差別的)

執行個體的同名變量會隐藏掉類變量,或者說是覆寫這個類變量,但是類變量依舊存在,并不是真正的覆寫

'''

# 對象的銷毀

# 類中可以定義__del__方法,稱為析構函數。

# 作用:銷毀類的執行個體的時候調用,以釋放占用的資源,其實就放些清理資源的代碼。

# 注意這個方法不能引起對象的真正銷毀,隻是對象銷毀的時候會自動調用它。

# 使用del語句删除執行個體,引用計數減1.當引用計數為0時,會自動調用__del__方法,由于# Python是實作了垃圾回收機制,不能确定對象何時執行垃圾回收。

class People:

    def __init__(self,name,age=18):

        self.name=name

        self.__age=age

    def __del__(self):

        print(self.name)

def item():

    tom=People('tom')

    tom.__del__()

    tom2=tom

    print(1,'del')

    del tom

    print(2,'del')

    del tom2

print('删除')

item()

python 類定義_Python面向對象之封裝類

# item()由于垃圾回收對象銷毀時,才是真正的清理對象,還會在回收對象之前自動調用__del__方法,除非你明确知道自己的目的。

如果你希望一切都能變得更加美好,就從改變自己開始。

python 類定義_Python面向對象之封裝類

關注微信公衆号“ 蜘蛛程式設計“ ~發送001,領取***PyCharm工具安裝包+注冊碼、笨辦法學Python**文檔 添加微信号"  BwcxTz1  "領取***Python爬蟲開發與項目實戰、Python程式錯誤故障排除17個問題**等更多優質文檔

||如有侵權,請聯系删除,謝謝!||

下一篇: WDA-1