物件導向中

2021-10-09 11:16:13 字數 3543 閱讀 5954

形如__開頭__結尾的這類方法統稱為魔法方法

1.–init–(self):定義類中屬性的特殊方法,當進行例項化物件時會自動呼叫該方法初始化該方法中的屬性。

語法:

def

__init__

(self,name,age)

: self.name = name

self.age = age

2.–str–(self):在類中定義了該方法,當進行例項化物件是,直接使用列印例項物件可直接訪問到類中的所有屬性。

語法:

def

__str__

(self)

: self.name = name

self.age = age

1.出現封裝的原因:需要一種方式增強資料的安全性

a.屬性不能隨意修改

b.屬於不能改為任意的值

2.封裝是物件導向的三大特性之一,是程式設計中的一種程式設計思想

3.封裝的作用是隱藏物件中一些不被外界隨意訪問到的屬性和方法

class

dog():

def__init__

(self,name,age)

: self.hidden_name = name

self.age = age

defrun(self)

:print

('{}的年齡為{}歲'

.format

(self.hidden_name,self.age)

)d = dog(

'德牧',3

)print

(d.name)

以上便是將屬性name定義成hiddenname來達到封裝的效果

4.getter方法:該方法是提供獲取封裝後類內部屬性的方法

class

dog():

def__init__

(self,name,age)

: self.hidden_name = name

self.age = age

defrun(self)

:print

('{}的年齡為{}歲'

.format

(self.hidden_name,self.age)

)def

get_name

(self)

:return self.hidden_name

d = dog(

'德牧',24

)print

(d.get_name(

))

5.setter方法:當封裝後想要修改類內部的屬性值可以使用該方法

class

dog():

def__init__

(self,name,age)

: self.hidden_name = name

self.age = age

defrun(self)

:print

('{}的年齡為{}歲'

.format

(self.hidden_name,self.age)

)def

get_name

(self)

:return self.hidden_name

defset_name

(self,name)

: self.hidden_name = name

d = dog(

'德牧',24

)print

(d.get_name())

d.set_name(

'二哈'

)print

(d.get_name(

))

雙下劃線開頭的來進行封裝那麼這種封裝的方式其實是給屬性起了另外的乙個名字_ 類名 _ _ 屬性名

class

dog():

def__init__

(self,name,age)

: self.__name = name

self.age = age

defrun(self)

:print

('{}的年齡為{}歲'

.format

(self.hidden_name,self.age)

)def

get_name

(self)

:return self.hidden_name

defset_name

(self,name)

: self.hidden_name = name

d = dog(

'德牧',24

)print

(d._dog__name)

1.私有屬性(__***):在對應的屬性名字之前加兩下劃線,該屬性即可成為私有屬性,外部無法訪問和隨意修改,私有屬性只能在類的內部方法可以訪問到和設定

class

dog():

def__init__

(self,name,age)

: self.__name = name

self.age = age

以上屬性name即為私有屬性,只能通過內部方法訪問和修改

2.私有方法(__***):在對應的方法名字之前加兩下劃線,該方法即可成為私有方法,外部無法訪問和隨意使用該方法,私有方法只能通過在類的內部方法可以訪問。

def

__run

(self):

pass

以上該方法即為私有方法

@property用來建立唯讀屬性 @property裝飾器會將方法轉換為相同名稱的唯讀屬性

class

dog():

def__init__

(self,name,age)

: self.hidden_name = name

self.age = age

@property

defrun

(self)

:print

('{}的年齡為{}歲'

.format

(self.hidden_name,self.age)

)def

get_name

(self)

:return self.hidden_name

defset_name

(self,name)

: self.hidden_name = name

d = dog(

'德牧',24

)d.run

物件導向中

出現封裝的原因 我們需要一種方式來增強資料的安全性 屬性不能隨意修改 屬性不能改為任意的值 封裝是物件導向的三大特性之一 封裝是指隱藏物件中一些不希望被外部所訪問到的屬性或方法 我們也可以提供給乙個getter 和setter 方法是外部可以訪問到屬性 getter 獲取物件中指定的屬性 sette...

python中 物件導向

1,物件導向 定義 與面向過程對比 官方定義 程式語言 2,物件導向語法 class 類名 內容3,例項 定義類 class person 行為通過方法體現 吃飯def eat self print 紅燒雞腿我喜歡吃 睡覺def sleep self print 睡覺也是一種生活態度 定義物件 li...

javascript中物件導向

概念 面向過程是親力親為,事無鉅細 物件導向就是找乙個物件,指揮得到結果 物件導向將執行者變成指揮者 物件導向不是面向過程的替代,而是面向過程的封裝 特性 抽象性 如果需要用乙個物件描述乙個資料,需要抽取這個物件 的核心資料,物件不再特定條件下,不知道是什麼 抽象就是霧裡看花,模模糊糊 比如 nam...