python基礎 物件導向之封裝

2022-03-17 07:27:59 字數 2464 閱讀 7800

#

在python中用雙下劃線,開頭的方式將屬性隱藏起來(設定成私有的)

#但其實這只是一種變形操作,而且僅僅在類定義階段會發生變形

#類中所有雙下劃線開頭的如__x都會在類定義的時候自動形成:_類名__x的形式。

class

a:

__n =0

#類的屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如__n 會變成_a__n

def__init__

(self):

self.

__x = 10#

self._a__x

def__foo(self): #

_a__foo

print('

from a')

defbar(self):

self.

__foo() #

只有在類的內部才可以通過__foo的形式訪問到

print(self.__n)#

a._a__是可以訪問到的

#這種,在外部是無法通過__x這個名字訪問到的

a =a()

a.bar()

#print(a.__n)

print

(a._a__n)

print(a.__dict__)a.

__y = 1

print(a.__dict__)#

在繼承中父類如果不想讓子類覆蓋自己的方法,可以將方法定義

#為私有的

class

a:

deffa(self):

print('

from a')

deftest(self):

self.fa()

class

b(a):

deffa(self):

print('

from b')

b =b()

b.test()

#將fa定義成私有的即__fa

class

a:

def__fa

(self):

print('

from a')

deftest(self):

self.

__fa

()

print(self.__fa

)class

b(a):

def__fa

(self):

print('

from b')

b =b()

b.test()

#我們可以來看一下執行過程,執行test-此時self為b物件-尋找__fa方法(前面我們說過,__fa會變成_a.__fa)-

#首先咋b類中找,沒有找到,-然後在父類a中尋找-執行

#封裝的真諦在於明確地區分內外,封裝的屬性可以直接在內部使用,而不能在外部直接使用,然而定義

#屬性的目的終歸是要用,外部想要用類隱藏的屬性,需要我們為其開闢介面,

#1,封裝資料,將資料隱藏起來不是目的,隱藏起來然後提供操作該資料的介面,然後我們可以在

#介面上附加對返資料操作的限制,以此完成對資料屬性的嚴格控制

#模擬於電腦上的各種配件,就是被封裝的資料,我們可以通過操作來改變電腦硬體的配置,

#例如我們要加一塊記憶體條,只需要知道介面,頻率等引數,而不用知道記憶體條是什麼材質的,

#也不用知道記憶體條內部顆粒的構成

class

teacher:

def__init__

(self,name,age):

self.

__name =name

self.

__age =age

self.set_info(name,age)

deftell_info(self):

print('

name:%s,age:%s

' %(self.__name,self.__age

))

defset_info(self,name,age):

ifnot

isinstance(name,str):

raise typeerror("

姓名必須是字串型別")

ifnot

isinstance(age,int):

raise typeerror("

年齡必須是整數型別")

self.

__name =name

self.

__age =age

t = teacher('

wang

',21)

t.tell_info()

t.set_info(

'cong

',21)

t.tell_info()

#2,封裝方法:目的是隔離複雜度

#就像我們玩電腦一樣,我們不需要知道電腦的工作原理,只需要知道他是怎麼用的就可以了

python物件導向之封裝

在python中用雙下劃線開頭的方式將屬性隱藏起來 設定成私有的 其實這僅僅這是一種變形操作且僅僅只在類定義階段發生變形 類中所有雙下劃線開頭的名稱如 x都會在類定義時自動變形成 類名 x的形式 classa n 0 類的資料屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如 n,會變...

python物件導向之封裝

封裝 1.封裝是物件導向程式設計的一大特點 2.物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 3.外界使用類建立物件,然後讓物件呼叫方法 4.物件方法的細節都被封裝在類的內部 需求 1 1.小明體重75.0公斤 2.小明每次跑步都會 0.5公斤 3.小明每次吃東西體重都會增加1公斤 需...

python物件導向之 封裝

1.先看隱藏。在python中用兩個下劃線開頭的方式將屬性隱藏起來。注意 這種只是語法的變形,在讀到有以 開的的函式時,會自動將名稱變成 類名 屬性 這種格式,所以在函式外部是無法通過 屬性 找到這個屬性的。class foo n 111111 將屬性隱藏起來 在定義階段會變成 foo n def ...