給類和物件新增成員方法 封裝性

2022-05-29 17:21:09 字數 1258 閱讀 5272

#

### 給類和物件新增成員方法(封裝性)

class

myclass1:

deffunc1(self):

print("

>> 成員方法func1")

deffunc2():

print("

>> 自定義func2")

deffunc3(obj):

"""func3中要用obj呼叫類中的方法,這裡的引數obj也就是myclass1類物件

"""print("

>> 自定義func3;

", end="") #

加個引數end=""讓print列印不自動換行

obj.func1()

obj1 =myclass1()

#給物件新增方法,新增完之後可以用物件呼叫,但不能用類呼叫

obj1.func2 =func2

obj1.func2()

#myclass1.func2() # 報錯,myclass1類中沒有func2方法

#給類新增方法,新增完之後可以用類呼叫,但不能用物件呼叫

myclass1.func_two = func2 #

這裡只是把func2函式繫結到myclass1類中並改了個名叫func_two

myclass1.func_two()

#obj1.func3() # 報錯,因為物件呼叫會自動傳參obj1物件,而func3也就是func2不接受任何引數

"""怎樣把func4新增到obj1物件中呢

"""#

方法一: 直接新增,之後用obj1物件呼叫時需要傳參物件obj1

obj1.func_three1 =func3

obj1.func_three1(obj1)

#方法二: 用methodtype內建方法將func4繫結到obj1物件上,之後用obj1呼叫時不用傳參obj1

import

types

obj1.func_three2 = types.methodtype(func3, obj1) #

methodtype方法可將

obj1.func_three2()

#列印結果

""">> 自定義func2

>> 自定義func2

>> 自定義func3; >> 成員方法func1

>> 自定義func3; >> 成員方法func1

"""#

給類或物件新增成員屬性就簡單很多了,直接賦值不用考慮傳參

動態給物件新增屬性和方法

正常情況下,我們定義了乙個class,建立乙個class的例項後,我們可以給該例項繫結任何的屬性和方法,這就是動態語言的靈活性。動態給物件新增屬性和方法 class.屬性名 屬性值 class.方法名 函式 這裡說的動態加屬性和方法主要指的是關於 slots 函式的使用 slots 屬性名,函式名 ...

物件導向 例項成員 類方法 類成員

1.語法 1 定義 物件.變數名 2 呼叫 物件.變數名 2.說明 1 首次通過物件賦值為建立,再次賦值為修改.w01 wife w01.name 麗麗 w01.name 莉莉 2 通常在建構函式 init 中建立。w01 wife 麗麗 24 print w01.name 3 每個物件儲存乙份,通...

類和物件封裝

屬性和行為 案例 設計學生類 訪問許可權 class 和 struct 的區別 成員屬性私有化 設計案例1 立方體類 設計案例2 點和圓關係 1 屬性和行為 includeusing namespace std const double pi 3.14 c 物件導向的三大特性 封裝 繼承 多型 萬事...