python之封裝(物件導向三大特性之一)

2021-09-22 21:12:44 字數 1512 閱讀 5954

__x = 1   #  _a__x
變數名稱前加上__    就是隱藏變數。

隱藏型別的原理是 在定義的時候把隱藏名稱變名  __attrname  -------->  _classname__attrname

class foo:

def __func(self):

print('from foo')

class bar(foo):

def __func(self):

print("from bat")

b = bar()

b._bar__func()

...

特點: 1、外部無法直接obj.__attrname

2、在類內部__attrname是可以直接呼叫的

3、子類無法覆蓋父類__attrname 的屬性(名字都不一樣啦,加了類名)

...

這種隱藏只是變性操作,把所有下劃線變成別的名稱。在類定義階段就實現。

b沒有bar(),查到class a執行,但是呼叫foo的時候其實是呼叫的class b的函式。為了在bar()絕對使用class a的foo函式,       因 此要用到封裝。

在外部無法直接接觸到隱藏的屬性,可以在class內部寫乙個介面提供視窗。但是這樣就規定了__name的格式。

class people:

def __init__(self,name,age):

self.__name = name

self.__age = age

def tell_info(self):

print('name: age:'%(self.__name,self.__age))

p = people('egon',18)

p.tell_info()

相同的道理,可以在class內部寫乙個介面修改隱藏屬性的資料。並且可以對輸入的資料進行驗證功能。

def set_info(self,name,age):

if not isinstance(name,str):

return

self.__name = name

self.__age = age

將複雜的方法封裝在內部。

使用者無需改變自己的使用方式。

python物件導向三大特性之封裝

封裝 類裡面不光有屬性還有方法。這種將屬性通過方法直接在類內部操作的形式就叫做封裝。把很多資料封裝到 個物件中,把固定功能的 封裝到 個 塊,函式,物件,打包成模組.這都屬於封裝的思想.封裝操作可以對受保護的成員進行功能開放的控制,達到保護資料不被非法訪問的目的。當然,方法也可以私有封裝,但是一般都...

python物件導向三大特性之封裝

封裝是物件導向三大特性最核心的乙個特性 封裝 整合 1 如何隱藏 在屬性名前加 字首,就會實現乙個對外隱藏屬性效果 該隱藏需要注意的問題 i 在類外部無法直接訪問雙下滑線開頭的屬性,但知道了類名和屬性名就可以拼出名字 類名 屬性,然後就可以訪問了,如foo.a n,所以說這種操作並沒有嚴格意義上地限...

Python物件導向三大特性之封裝

面向函式的程式設計和物件導向程式設計對比 通過函式和物件的方法實現同樣的功能,看起來是面向函式的程式設計比較簡單 假如是連線資料庫的增,刪,改,查操作使用物件導向的方法 更加簡單 vim day7 3.py usr bin python coding utf 8 def fetch 連線資料庫,ho...