-
封裝
''' 面向對象: 封裝,繼承,多態 1.將屬性和方法封裝到類中 2.封裝私有屬性: 在類定義的時候,將屬性私有化,並定義公有的set和get方法。 封裝私有化屬性: 1. 對外隱藏屬性,只能在類中訪問屬性 2. 可以對象私有屬性的賦值和取值起到限制作用 3. 通過set方法賦值,通過get方法取值 ''' class Person: def __init__(self, name, age, gender): self.__name = name self.__age = age self.__gender = gender def set_age(self, age): if 110 > age > 0: self.__age = age else: print('年齡不在正確的範圍內') def get_age(self): return self.__age def set_name(self, name): if len(name) >= 3: self.__name = name else: print('名字格式錯誤') def get_name(self): return self.__name p1 = Person('哈撒給', 2, '男') age = p1.get_age() print(age) p1.set_age(200) age = p1.get_age() print(age) p1.set_name('哈哈撒給') name = p1.get_name() print(name)
-
私有化封裝
''' 簡化封裝: @property 步驟: 1. 在類中,先通過@property裝飾原來的get_xxxx方法 @property def a(self): pass 2. 在類中,第一步中裝飾的函數名繼續裝飾set,裝飾的set的名字要與get函數的名字一致 @a.setter def a(self,x): pass 3. 在對象中使用的時候,就只需要: 賦值: 對象名.a = 100 ------》就回去找set方法 取值: print(對象名.a) ------》 只要想打印屬性名則獲取調用get方法 ''' class Person: def __init__(self, name, age, gender): self.__name = name self.__age = age self.__gender = gender @property def age(self): return self.__age @age.setter def age(self, age): # age參數就是接受等號後面的值 if 110 > age > 0: self.__age = age else: print('年齡不在正確的範圍內') def set_name(self, name): if len(name) >= 3: self.__name = name else: print('名字格式錯誤') def get_name(self): return self.__name p1 = Person('哈撒給', 2, '男') # p1.name = '哈哈撒給' p1.age = 200 # 調用set方法 print(p1.age)
封裝+私有化封裝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.