Python 封裝物件類

2021-08-28 18:19:33 字數 2826 閱讀 3439

python雖然是解釋型語言,但從設計之初就已經是一門物件導向的語言,對於python來說一切皆為物件。正因為如此,在python中建立乙個類和物件是很容易的,當然如果習慣面向過程或者函式的寫法也是可以的,python並不做硬性的限制。

在很多場景,我們都需要封裝乙個物件類,這樣操作起來很方便快捷,接下來一步一步的和大家分享一下python是怎麼樣封裝類的。

版本一:

封裝乙個類,最基本的就是「init」方法,當建立乙個物件時,就是呼叫「init」方法,根據傳遞的來初始化物件的值。

class person:

def __init__(self, name, age, gender):

self.name = name

self.age = age

self.gender = gender

if __name__ == "__main__":

person = person("張三", 12, "男")

print(person)

執行測試一下:

測試輸出新建person的物件,發現輸出的是一串位址,這樣不利於我們直接觀察。封裝成物件還滿足不了我們的需求,所以我們需要對版本進行一下公升級

版本二:

那我們想要檢視物件的值要怎麼辦呢?很簡單,重寫__str__方法。

原因:當我們print乙個物件時,系統會呼叫預設的__str__方法,輸出的是一串位址,但是不利於我們直接觀察,所以我們需要根據我們自己的需求重寫__str__方法。

class person:

def __init__(self, name, age, gender):

self.name = name

self.age = age

self.gender = gender

def __str__(self):#該方法可以根據自己的需求重寫,沒有固定的模式

return "姓名:{},年齡:{},性別:{}".format(self.age, self.age, self.gender)

if __name__ == "__main__":

person = person("張三", 12, "男")

print(person)

再次執行測試:

這樣看起來就直觀多了

版本三:

模擬這樣乙個場景:以相同的引數,初始化了兩個物件,比較這兩個物件是否相等,我們先通過**實現一下:

class person:

def __init__(self, name, age, gender):

self.name = name

self.age = age

self.gender = gender

def __str__(self):

return "姓名:{},年齡:{},性別:{}".format(self.age, self.age, self.gender)

if __name__ == "__main__":

person = person("張三", 12, "男")

person1 = person("張三", 12, "男")

print(person == person1)

測試結果:

結果顯示,兩個物件並不相等

但是從比較人性化的方面來講,他們的值是相同,應該是相等的,而這也是我們的需求,需求有了,就可以根據需求來公升級版本了。

我們只需要重寫__eq__方法就行了,原因是當比較兩個物件是否相等時,系統會呼叫預設的__eq__方法,而我們只需要根據自己的需求重寫__eq__方法。

class person:

def __init__(self, name, age, gender):

self.name = name

self.age = age

self.gender = gender

def __str__(self):

return "姓名:{},年齡:{},性別:{}".format(self.age, self.age, self.gender)

def __eq__(self, other) -> bool:

return (self.name == other.name) and (self.age == other.age) and (self.gender == other.gender)

if __name__ == "__main__":

person = person("張三", 12, "男")

person1 = person("張三", 12, "男")

print(person == person1)

測試執行結果:

這次是我們想要的結果了。

以上就是我們平常的需要最多的幾個需求。

python物件封裝 Python物件封裝安全性

您不應該真正依賴private,public等來保證安全性 如 防止惡意 和外部威脅 它們的本意是防止程式設計師朝自己的腳開槍,而不是作為 計算機 安全措施。你也可以輕鬆訪問c 物件的私有成員字段,只要你繞過靜態編譯器檢查,直接進入記憶體,但是你會說c 缺少真正的封裝嗎?在 最好的辦法是在單獨的程序...

Python中用類實現物件和封裝

用類實現物件和封裝 物件 對應客觀世界的事物,將描述事物的一組資料和與這組資料有關的操作封裝在一起,形成乙個實體,這個實體就是物件 類 具有相同或相似性質的物件的抽象就是類 forexample 汽車是乙個類,則具體一輛汽車就是乙個物件 物件導向程式設計的特點 1.封裝性 封裝是指將資料與具體操作的...

類和物件封裝

屬性和行為 案例 設計學生類 訪問許可權 class 和 struct 的區別 成員屬性私有化 設計案例1 立方體類 設計案例2 點和圓關係 1 屬性和行為 includeusing namespace std const double pi 3.14 c 物件導向的三大特性 封裝 繼承 多型 萬事...