在python
中可以使用以下兩個方法驗證:
在識別符號/資料後輸入乙個.
,然後按下tab
鍵,ipython
會提示該物件能夠呼叫的方法列表
使用內建函式dir
傳入識別符號/資料,可以檢視物件內的所有屬性及方法
提示__方法名__
格式的方法是python
提供的內建方法 / 屬性,稍後會給大家介紹一些常用的 內建方法 / 屬性
序號方法名
型別作用
01__new__
方法建立物件時,會被自動呼叫
02__init__
方法物件被初始化時,會被自動呼叫
03__del__
方法物件被從記憶體中銷毀前,會被自動呼叫
04__str__
方法返回物件的描述資訊,print
函式輸出使用
提示利用好dir()
函式,在學習時很多內容就不需要死記硬背了
classperson:
#初始化方法
def__init__
(self, name, weight):
self.name =name
self.weight =weight
#預設輸出
def__str__
(self):
return
"我的名字叫 %s 體重 %.2f 公斤
" %(self.name, self.weight)
defrun(self):
print("
%s 愛跑步,跑步鍛鍊身體
" %self.name)
self.weight -= 0.5
defeat(self):
print("
%s 是吃貨,吃完這頓再**
" %self.name)
self.weight += 1xiaoming = person("
小明", 75)
xiaoming.run()
xiaoming.eat()
xiaoming.eat()
print(xiaoming)
引用概念的強調
物件應該包含有哪些屬性,應該封裝在類的內部
#xiaoming.address = "
北京"
__init__
方法是專門用來定義乙個類具有哪些屬性的方法!
classcat:
def__init__
(self, name):
print("
初始化方法 %s
" %name)
self.name =name
tom = cat("
tom"
)lazy_cat = cat("
大懶貓"
)
序號方法名
型別作用
01__del__
方法物件被從記憶體中銷毀前,會被自動呼叫
02__str__
方法返回物件的描述資訊,print
函式輸出使用
應用場景
生命週期
classcat:
def__init__
(self, new_name):
self.name =new_name
print("
%s 來了
" %self.name)
def__del__
(self):
print("
%s 去了
" %self.name)
#tom 是乙個全域性變數
tom = cat("
tom"
(tom.name)
#del 關鍵字可以刪除乙個物件
deltom
print("
-" * 50)
注意:__str__
方法必須返回乙個字串
classcat:def __init__(self, new_name):
self.name =new_name
print("%s 來了" %self.name)
def __del__(self):
print("%s 去了" %self.name)
def __str__(self):
return "我是小貓:%s" %self.name
tom = cat("tom")
print(tom)
classwomen:
def__init__
(self, name):
self.name =name
#不要問女生的年齡
self.__age = 18
def__secret
(self):
print("
我的年齡是 %d
" % self.__age
)xiaofang = women("小芳"
)#私有屬性,外部不能直接訪問
#print(xiaofang.__age)
#私有方法,外部不能直接呼叫
#xiaofang.__secret()
python
中,並沒有真正意義的私有
#私有屬性,外部不能直接訪問到
(xiaofang._women__age)
#私有方法,外部不能直接呼叫
xiaofang._women__secret()
物件導向三大特性
封裝根據職責將屬性和方法封裝到乙個抽象的類中
繼承實現**的重用,相同的**不需要重複的編寫
多型不同的物件呼叫相同的方法,產生不同的執行結果,增加**的靈活度
class類名(父類名):
pass
重寫父類方法有兩種情況:
覆蓋父類的方法(相當於在子類中定義了乙個和父類同名的方法並且實現)
對父類方法進行擴充套件(子類方法中,在需要的位置使用super().父類方法
來呼叫父類方法的執行)
解決方法:python 中的 mro —— 方法搜尋順序(知道)object
是python
為所有物件提供的基類,提供有一些內建的屬性和方法,可以使用dir
函式檢視。
在python 3.x
中定義類時,如果沒有指定父類,會預設使用object
作為該類的基類——python 3.x
中定義的類都是新式類
在python 2.x
中定義類時,如果沒有指定父類,則不會以object
作為基類
新式類和經典類在多繼承時 ——會影響到方法的搜尋順序(如果沒有父類,建議統一繼承自object
)
Python學習第八天
字典與集合 字典是一種列表,只不過其中儲存的元素成了鍵值對,字典的每個鍵值 key value 對用冒號 分割,每個鍵值對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 d 值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。乙個簡單的字典例項 dict1 dict2 dict ...
學習python 第八天
物件導向 多型 多種形態 繼承 重寫 類與類之間的關係 繼承 關聯 組合,聚合 依賴 關聯 乙個類的物件作為另乙個類的屬性 依賴 乙個類的物件作為另乙個類的方法的引數 耦合程度 繼承 關聯 依賴 封裝 類屬性 物件屬性 class a name 張三 類屬性 def init self,age se...
學習Python的第八天
今天學習的內容是字典與集合 字典 字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。訪問字典裡的值 把相應的鍵...