#### 給類和物件新增成員方法(封裝性)
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 物件導向的三大特性 封裝 繼承 多型 萬事...