主要通用__
新增到屬性名前,可以讓該屬性得到乙個保護
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...