python物件導向2

2021-09-14 07:25:30 字數 4608 閱讀 2293

主要通用__新增到屬性名前,可以讓該屬性得到乙個保護

class wudang:

name = "武當"

__kongfu_list = ["aaa", "bbb", "ccc"]

wd = wudang()

print(wd.name)

print(wd.__kong_list)

定義類的時候,如果希望繼承自另外乙個類

可以通過

class 類名(父類的類名):
定義普通類,有兩種方式

如果需要繼承的話,只有這一種

繼承後的效果

當前的類,擁有了父類的公有屬性和公有方法

類的繼承,提高了**的效率,減了重複的**

專業術語

父類是子類的基類,子是父類的派生類,子類從父類派生

如果父類的方法,與需求不符合

那麼就在當前(自己的類)中重新寫乙個方法

在自己的方法中,定義需要的功能

注意對於重寫而言

方法名一定是與父類中方法同名

如果乙個物件在建立的時候,需要有物件的屬性

那麼,我們應該在init方法中進行初始化

初始化操作主要的處理是

物件.屬性 = 值
問題,值從**來?

類在進行例項化時,往類名後面的括號中,傳遞資料

t = cat(『湯姆』)

通過這種方式傳參

物件 =  類名(引數)
引數會傳送到init方法中,按照位置對應的關係進行給值

初始化方法定義的時候

def __init__(self, 形參1,形參2):

我們在外部把類例項化物件時傳參這樣傳

物件 = 類名(實參1,實參2)

通過這種方式傳遞引數

實參1的資料,會傳遞給形參1

實參2的資料,會傳遞給形參2

不是所有的物件屬性都是要傳參的

有的物件屬性,可以通過計算獲取

例如,房屋擺放家具案例中的剩餘面積,用總面積- 已擺放的家具面積

innot in

isis not

進行資料在記憶體中位址的驗證

in [4]: a = [1,2,3]

in [5]: b = a

in [6]: id(a)

out[6]: 2058783955976

in [7]: id(b)

out[7]: 2058783955976

in [8]: a is b

out[8]: true

in [10]: a

out[10]: [1, 2, 3]

in [11]: b

out[11]: [1, 2, 3]

in [12]: c = [1,2,3]

in [13]: id(c)

out[13]: 2058782337992

in [14]: id(a)

out[14]: 2058783955976

in [15]: a is c

out[15]: false

區分 == 驗證 與 身份證,驗證時關注的點

in [17]: a

out[17]: [1, 2, 3]

in [18]: b

out[18]: [1, 2, 3]

in [19]: c

out[19]: [1, 2, 3]

in [20]: a == c

out[20]: true

in [21]: a is c

out[21]: false

# 定義乙個類,建立類物件

# 1,完整版 class 類名(object): #如果類有繼承其它的類,其它類的類名就寫在括號中

# 2,簡單版class 類名: # 如果類沒有繼承其它的類的話,我們使用這一種

class cat:

pass

接收物件的變數名 = 類名()

p = plane()

類名()

建立物件

被動觸發

建立物件的同時,會觸發乙個init方法

物件建立出來的時候,會執行一次init方法

利用這個特性,我們可以在init方法中新增一些東西

嬰兒出生的哭

遊戲開始時的初始化等待

物件從記憶體中被登出,被釋放記憶體空間的時候,會自動觸發的方法

1,主動刪除

del 物件

del(物件)

2,遊戲結束,**執行到最終

觸釋器會清空所有資源,清空記憶體中存放的一切資料

清空一切時,自然也會清空物件

def __del__(self):

# print('del')

words = [

"我還會回來的",

"我還不想死",

"下次我會更勱害的"

]idx = random.randint(0,2)

print(words[idx])

def __str__(self):

return "abc"

str方法中

返回的是什麼內容

列印這個物件時,會就會顯示什麼內容

物件.屬性 = 值

初始化的時候

小孩一出生,肯定有乙個編號,這個編號,就是相當於小孩物件的屬性

小孩一出生,身高,體重,物件屬性

上述的物件屬性,建立的時機

應該是在初始化的時候

也就是說

是在物件被建立的時候,把屬性賦給物件

可以利用init方法,給物件新增需要的物件屬性

需要的時候

小孩長大了,參加培訓

獲得了技能

那麼這種技能,屬於後面滔天大罪 中的屬性

因此,這樣一樣的物件屬性

不在初始化方法中賦值

可以在外面給他新增

# 定義乙個類,建立類物件

# 1,完整版 class 類名(object): #如果類有繼承其它的類,其它類的類名就寫在括號中

# 2,簡單版class 類名: # 如果類沒有繼承其它的類的話,我們使用這一種

class cat:

pass

接收物件的變數名 = 類名()

p = plane()

類名()

建立物件

被動觸發

建立物件的同時,會觸發乙個init方法

物件建立出來的時候,會執行一次init方法

利用這個特性,我們可以在init方法中新增一些東西

嬰兒出生的哭

遊戲開始時的初始化等待

物件從記憶體中被登出,被釋放記憶體空間的時候,會自動觸發的方法

1,主動刪除

del 物件

del(物件)

2,遊戲結束,**執行到最終

觸釋器會清空所有資源,清空記憶體中存放的一切資料

清空一切時,自然也會清空物件

def __del__(self):

# print('del')

words = [

"我還會回來的",

"我還不想死",

"下次我會更勱害的"

]idx = random.randint(0,2)

print(words[idx])

def __str__(self):

return "abc"

str方法中

返回的是什麼內容

列印這個物件時,會就會顯示什麼內容

物件.屬性 = 值
初始化的時候

小孩一出生,肯定有乙個編號,這個編號,就是相當於小孩物件的屬性

小孩一出生,身高,體重,物件屬性

上述的物件屬性,建立的時機

應該是在初始化的時候

也就是說

是在物件被建立的時候,把屬性賦給物件

可以利用init方法,給物件新增需要的物件屬性

需要的時候

小孩長大了,參加培訓

獲得了技能

那麼這種技能,屬於後面滔天大罪 中的屬性

因此,這樣一樣的物件屬性

不在初始化方法中賦值

可以在外面給他新增

物件.屬性    ----> 可以得到物件的屬性的值
物件.方法名()     -----> 讓物件的方法執行起來

Python 物件導向2

instance 和 issubclass class foo pass foo foo print isinstance foo,foo print isinstance 1 int true trueclass foo pass foo foo print isinstance foo,foo ...

Python 物件導向 2

組合 適合沒干係的橫向類,比如池塘,烏龜,魚 把類的例項化放到新類裡面 屬性名和方法名相同,屬性會覆蓋掉方法 繫結 方法需要例項才能被呼叫!這種限制即繫結 用self接受繫結 class ball def xx self,a print b ball b.xx 123 刪除del ball類時,b....

Python 物件導向程式設計2

start object 類是所有類的父類,它定義了好多方法,重寫這些方法我們可以定製自己的類。我們可以比較兩個數字的大小,那我們自定義的類可不可以呢?其實很簡單,我們只需要重寫 object 類中定義的比較方法即可。class mynumber 初始化屬性 def init self,num se...