# 封裝:将屬性和方法封裝到類中,通過構造類的對象來實作功能
# 在面向對象的程式設計過程中有兩個重要概念:類(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()

# 構造函數 __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)
'''
總結
屬性是類的,也是這個類所有執行個體的,其執行個體都可以通路到;
是執行個體的,就是這個執行個體自己的,通過類通路不到
類變量是屬于類的變量,這個類的所有執行個體可以共享這個變量
對象(執行個體或類)可以動态的給自己增加一個屬性(指派即定義一個新屬性)
執行個體.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()
# item()由于垃圾回收對象銷毀時,才是真正的清理對象,還會在回收對象之前自動調用__del__方法,除非你明确知道自己的目的。
如果你希望一切都能變得更加美好,就從改變自己開始。
關注微信公衆号“ 蜘蛛程式設計“ ~發送001,領取***PyCharm工具安裝包+注冊碼、笨辦法學Python**文檔 添加微信号" BwcxTz1 "領取***Python爬蟲開發與項目實戰、Python程式錯誤故障排除17個問題**等更多優質文檔
||如有侵權,請聯系删除,謝謝!||