Python類學習(五) 封裝

2021-09-26 03:32:42 字數 1240 閱讀 9318

封裝:將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,而是通過該類提供的方法實現對內部資訊的操作和訪問;

作用:讓使用者只能通過事先預定的方法訪問例項引數,從而可以在該方法中加入控制邏輯,限制對屬性的不合理訪問;

隱藏類的實現細節;

python並沒有提供類似於其他語言的private等修飾符,因此python不能真正實現隱藏;

為了隱藏類中的成員,只要將python類的成員命名以雙下劃線開頭,python就會將他們「隱藏」起來,如下**所示:

# 定義乙個矩形類

class rectangle:

def __init__(self, width, height):

self.__width = width

self.__height = height

def getwidth(self):

return self.__width

# 建立乙個物件

my_rectangle = rectangle(10, 5)

print(my_rectangle.__width)

# 程式報錯,attributeerror: 'rectangle' object has no attribute '__width'

我們將例項變數命名為__width,然後在程式中呼叫發現程式報錯「類rectangle物件沒有屬性__width」,原因是因為python將該變數隱藏了,這樣程式就無法直接訪問__width變數,只能通過getwidth()方法訪問;

但這個「隱藏」不是真正意義上的隱藏,這只是python的乙個「易容術」,python會「偷偷」改變以雙下劃線開頭的方法名,會在這些方法名前新增單下劃線和類名,因此可以對「隱藏」的變數這樣訪問:

# 定義乙個矩形類

class rectangle:

def __init__(self, width, height):

self.__width = width

self.__height = height

def getwidth(self):

return self.__width

# 建立乙個物件

my_rectangle = rectangle(10, 5)

print(my_rectangle._rectangle__width)

# 10

Kotlin學習之 5 7 封裝類

封裝類是用來表示嚴格的類層級,當乙個值可以是乙個型別集合中的任意乙個,而不是其他型別時。他們的相當於是列舉類的擴充套件,對於每乙個列舉型別的值得集合也是嚴格定義的,但是每乙個列舉常量有且僅有乙個單例,這樣乙個封裝類的子類可以有多個包含狀態的例項。要宣告乙個封裝類,需要在類名前面用sealed描述符標...

C 學習(8) 封裝

c 物件導向的三大特性 封裝 繼承 多型 c 認為萬事萬物都可以為物件,物件上有其屬性和行為 具有相同性質的物件,可以抽象為類 封裝是c 物件導向三大特性之一 封裝的意義 封裝意義一 在設計類的時候,屬性和行為寫在一起,表現事物 語法 class 類名 示例1 設計乙個圓類,求圓的周長 includ...

3 2封裝的日期類

public class mydate 共有類,與原始檔同名 public mydate int year,int month,int day 建構函式,指定日期 public mydate 無參構造方法。預設指定日期 public mydate mydate d 過載函式 public void ...