python物件導向之資料的封裝及物件屬性的擴充套件

2021-09-11 01:17:40 字數 1752 閱讀 5706

為了讓定義的資料型別,能使用不同的應用場景,一般情況下我們 要對當前型別的所有屬性進行封裝處理。

封裝屬性之後,會提供訪問屬性資料的set/get方法,書寫過程中方法中不需要新增任何限制條件,只是預留了可以新增限制條件的方法而已,後期根據專案需求進行限制和條件的完善。

class goods:

def __init__(self, name, price):

self.__name = name

self.__price = price

def set_name(self, name):

self.__name = name

def get_name(self):

return self.__name

def set_price(self, price):

self.__price = price

def get_price(self):

return self.__price

car = goods("奧拓", 18000)

print("car的**:", car.get_price()) # 1800

# 如果通過 物件的引用變數.屬性 直接賦值,該屬性又不是型別中定義的屬性

# 這個屬性就是 單獨屬於這個物件 的擴充套件屬性。

car.__price = 20000

print("car的**", car.__price, "---", car.get_price()) # 20000 ————18000

# 擴充套件屬性,屬於物件car

car.__color = "紅色"

print(car.__color) # 紅色

# car2 = goods("奧迪", 300000) # 報錯

# print(car2.__color)

"""上面方法可以擴充套件屬性,但是,這樣的擴充套件方式,破壞了原有的封裝語法,讓**的可讀性出現了嚴重的下降

解決方案如下:在型別中,定義好~該物件可能出現的屬性,其他任何擴充套件屬性就不能新增了。

"""class pet:

"""寵物型別:限制該型別只能出現哪些屬性"""

# 限制該型別的物件,只能擁有下面列表**現的屬性

__slots__ = ['__name', '__age', '__gender', 'color']

def __init__(self, name, age):

self.__name = name

self.__age = age

self.__gender = gender

def set_name(self, name):

self.__name = name

def get_name(self):

return self.__name

def set_age(self, age):

self.__age = age

def get_age(self):

return self.__age

p = pet("tomcat", 3)

print(p.get_name(), p.get_age()) # tomcat 18

# 擴充套件屬性

p.color = "灰色"

print(p.get_name(), p.get_age(), p.color)

p.email = "[email protected]" # 報錯

print(p.email)

Windows應用程式的物件導向特性 之 封裝

在早期的程式設計生涯中,程式設計師採用c語言和windows api函式進行windows程式設計。但採用這種方式進行程式開發,使得開發過程艱苦 乏味。隨著程式設計技術的不斷發展,windows程式設計採用了物件導向的程式設計思想 object oriented programming,oop 這種...

Python物件導向之物件成員

任務 請修改右側 begin end 之間的 使其可以正常執行。該 的目的是求輸入資料的階乘。請在下面的begin end之間按照注釋中給出的提示編寫正確的 begin class factorial def init self,num self.num num defget value self ...

物件導向3(封裝)

概念 隱藏物件的內部資訊,給外部提供一些訪問內部的介面。作用 提高 復用性,提高 安全性,提高 易用性。實現步驟 隱藏內部資訊,使用private關鍵字修飾屬性。private 是關鍵字,表示私有的只能修飾屬性和方法,修飾成員只能被類訪問。提供的訪問介面 方法 getter setter方法 返回值...