物件導向有三大特點:封裝 繼承 多型
真的很像乙個有錢人的生活,乙個巨有錢的人的生活。
他追求的生活是 安全 繼承權 通吃……
封裝就是保證安全性,別人不能隨意打擾他,要接觸他需要有特殊的許可
繼承:他繼承了大筆的遺產或者非遺產,自己也會留下遺產給負二代
多型:多人運動了解一下……在不同人面前有不同的臉……當然不是啦,而是這個人隨和,對所有人都通吃,許多人都可以靠他解決乙個問題。
瞎扯到此結束,因為我不是有錢人,我理解的有錢人也就這水平。
但是封裝並不是完全封死,封裝更像是包裝,比如快遞外面的快遞盒或者袋子,封死就是乙個鐵皮盒子,打不開的
class
car:
def__init__
(self,name,value)
:#self.name = name
#self.myname = name
#self.__name = name
self._name = name
self._value = value
defrun(self)
:#print(self.myname,"開始跑了!")
print
(self._name,
"開始跑了!"
)def
getname
(self)
:return self._name
defsetname
(self,name)
: self._name = name
defgetvalue
(self)
:print
(self._value)
return self._value
defsetvalue
(self,value)
:if value>
10000
: self._value = value
a = car(
'大奔'
,100000
)#a.name = 'tesila'
#a.#p._person__name = '1111'
#a.__person__name = '1111'
#a.__name = '1111' 這樣是不管用的,
##a._person__name = '1111' 這樣才管用
#a._name = '1111'
a.run(
)a.getvalue(
)a.setvalue(
5000
)a.getvalue(
)
輸出結果:
大奔 開始跑了!
100000
100000
如果為20000時,則可以重新賦予價值
class
person
:def
__init__
(self,name)
: self._name = name
#getter
@property
defname
(self)
:print
('get 方法執行了啊'
)return self._name
p = person(
'葫蘆娃'
)#print(p.name())
print
(p.name)
執行的結果是:可以通過p.name,通過呼叫方法的方式,將方法變成屬性,呼叫的是getter方法
此時p.name表示的是p的乙個屬性了,這個屬性是唯讀的
p.name='1111』這樣是會報錯的
但是p._name=『1111』是不會報錯的,而且是可以成功修改name值的
因為p._name 並不是p的屬性,而p.name 是p的屬性
所以說可以防止屬性被修改的意思是防止屬性通過p.name的方式被修改
那麼我們想,如果把_name修改為name這樣的話,是不是就可以徹底防止被修改了啊?
當然不是了啊,這樣的話,因為name方法已經轉化為屬性了,目前在初始化中又定義了乙個name屬性,這樣的程式當然是會報錯的啊
property這個裝飾器的作用就是可以把方法轉化為同名的屬性,這個就是真的屬性,而且是唯讀屬性
那麼這個name的值,就不能直接修改了嗎?其實我們可以通過在類中定義乙個setter來實現將唯讀變為非唯讀
具體**如下:
class
person
:def
__init__
(self,name)
: self._name = name
#getter
@property
defname
(self)
:print
('get 方法執行了啊'
)return self._name
@name.setter
defname
(self,name)
:print
('set 方法執行了啊'
) self._name = name
p = person(
'葫蘆娃'
)#print(p.name())
print
(p.name)
#p.name = '1111'
p.name =
'1111'
#p.name = '1111'
print
(p.name)
property裝飾器,我想我明白了,這真的是個好用的工具啊! 物件導向三大特徵之封裝
上半句 下半句。三流的書籍和部落格只會告訴你上半句,因為它們的作者自己也不知道下半句,而讓我們接近真理,走的更遠的是下半句。並且下半句往往非常簡單。上半句就是一些半吊子挖出的天坑,就算下半句非常簡單。因為上半句的誤導產生的阻礙,讓無數人很多年也接觸不到講述真理的下半句。時刻警醒 我們要學習的是講述真...
物件導向三大特徵之封裝
將屬性封裝起來,不讓外部直接訪問 提供getset方法訪問 package com.lv.am 資料的封裝 資料的實體類物件 除了這個商品的物件 我們還有什麼現實生活中也是這樣來定義乙個實體類 public class goods public void setname string name pu...
物件導向三大特徵 封裝
一 封裝 1 程式的問題 無法保證資料的安全性,同時也無法保證資料的有效性。二 封裝的要求 1 private 私有的,被private修飾的內容只能在類的內部使用public 公開的 2 為私有的屬性提供公開的get set方法。a為屬性賦值 set方法 public void set屬性名 資料...