四、property屬性
封裝:指隱藏物件的屬性和實現細節,不允許外部直接方位物件內部的資訊,僅僅提供公共的訪問方式給外部,實現外部對內部的操作和訪問。
封裝的目的:
封裝的益處:
python中採用雙下劃線開頭的方式將變數設定為私有變數,即「__***」
私有變數的特點:
classp(
object):
def__init__
(self)
: self.__a =
10 self.a =
0def
p(self)
:print
('%d '
% self.__a)
print
('%d '
% self.a)
p = p(
)p.p(
)>>
>
100
沒有定義私有方法時,子類會重寫父類的方法:
class
animal
(object):
defbak
(self)
:print
('bak'
)def
test
(self)
: self.bak(
)class
dog(animal)
:def
bak(self)
:print
('汪汪'
)d = dog(
)d.test(
)>>
>
汪汪
定義私有方法時,子類無法重寫父類的方法:
class
animal
(object):
def__bak
(self)
:print
('bak'
)def
test
(self)
: self.__bak(
)class
dog(animal)
:def
__bak
(self)
:print
('汪汪'
)d = dog(
)d.test(
)>>
>
bak
使用property屬性的目的:使用property屬性之後,呼叫方法時,直接得到該結果,無法知悉方法本身細節。
class
person
(object):
def__init__
(self, name)
: self.__name = name
# python3 中才有property的@***.setter,@***.deleter形式
@property
# 讀def
name
(self)
:print
(self.__name)
@name.setter # 寫
defname
(self, name1)
: self.__name = name1
print
(self.__name)
@name.deleter # 刪除
defname
(self)
:print
(none
)p = person(
'tom'
)p.name
p.name =
'jack'
del p.name
>>
>
tomjack
none
property類屬性方式
property()函式有四個引數:
property(get_***, set_***, del_***, 「doc_description」)
class
person
(object):
def__init__
(self, name)
: self.__name = name
defname
(self)
:print
(self.__name)
defset_name
(self,name1)
: self.__name = name1
print
(self.__name)
defdel_name
(self)
:print
(none
) name =
property
(name, set_name, del_name)
p = person(
'tom'
)p.name
p.name =
'jack'
del p.name
>>
>
tomjack
none
類的三大特性 封裝以及Property特性
class people def init self,height,weight self.height height self.weight weight property 裝飾器,下面方法的呼叫無需加 defbmi self return self.weight self.height 2 pe...
python的三大特性之封裝
隱藏物件的某些屬性和實現的細節,僅僅只對外提供公共訪問的方式。將函式和屬性裝到了乙個非全域性的命名空間。封裝的好處 1 將變化隔離 2 便於使用 3 提高復用性 4 提高安全性 1 將不需要對外提供的內容全部都隱藏起來 2 吧屬性都隱藏,提供公共方法對其訪問 私有變數 不能在類的外面去引用它。它依然...
python類的三大特性
繼承簡介繼承是面對物件的三大特點之一 通過繼承我們可以使乙個類獲取他繼承的類中的屬性 變數 和方法 函式 在定義類時,可以在類名後面的括號中指定當前類的父類 超類,基類 繼承提高了類的復用性。讓類與類之間產生了關係。又累這個關係,才有了多型的特性。方法重寫如果在子類中有和父類同名的方法,如果我們呼叫...