物件導向知識補充1

2022-08-10 10:00:19 字數 788 閱讀 9773

1、__setattr__:對屬性賦值或修改時候被呼叫

class

foo:

def__init__

(self,name):

self.name=name

def__setattr__

(self, key, value):

print('

觸發了__setattr__')

a = foo('

zjh'

)a.t=2

print(a.__dict__)#

輸出結果

觸發了__setattr__

觸發了__setattr__

{}從上面結果可以看出,當我們設定屬性或者給屬性賦值的時候,會呼叫__setattr__的執行。但為什麼物件f的命名空間沒有我們設定的name和x兩個變數呢?原因是:因為你重寫了__setattr__功能,對它並沒有進行任何操作,僅僅只有一條語句,而預設的__setattr__會將屬性按照鍵值對寫入物件的命名空間。如果自己重寫了__setattr__,但是又沒有進行任何操作,要想完成物件屬性的賦值操作,必須得通過以下方式才能實現:

a.__dict__['

name

']='

zjh'

print

(a.name)

#輸出結果

zjh

2、__getattr__:只有在呼叫屬性時且屬性不存在的情況下,觸發這個函式執行.

3、__delattr__:當刪除乙個物件的屬性值時,會觸發delattr的執行。

2 C 物件導向補充1

1例 2 錯誤用例 3class date 4 7正確用例 8class date 9 1 date date int y,int m,int d year y month m day d 2 1 類名 類名 const 類名 引用名 2 5.2.1.初始化時 1 date date2 date1 ...

物件導向的補充

封裝 封裝是把物件中的成員屬性和成員方法,加上訪問修飾符,使其盡可能隱藏物件的內部細節,已達到對成員的訪問控制 是訪問的控制,而不是拒絕訪問 自己能用,別人不能用 三種訪問修飾符 public 公認的,預設 private 私有的 用於封裝,在外部不可訪問 protected 受保護的 只要在宣告成...

C 物件導向補充

類作為構造函式引數時呼叫 拷貝建構函式 class clock 有參 clock int a,string name clock int b,string name a b name name 拷貝構造 clock const clock clock 析構 clock static void sho...