身份運算子用於比較兩個物件的記憶體位址是否一致 ——是否是對同乙個物件的引用
運算子描述
例項is
is 是判斷兩個識別符號是不是引用同乙個物件
x is y,類似 id(x) == id(y)
is not
is not 是判斷兩個識別符號是不是引用不同物件
x is not y,類似 id(a) != id(b)
is
用於判斷兩個變數 引用物件是否為同乙個
==
用於判斷引用變數的值是否相等
>>
> a =[1
,2,3
]>>
> b =[1
,2,3
]>>
> b is a
false
>>
> b == a
true
應用場景
定義方式
例:
class women:
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
中,並沒有真正意義的私有
物件導向三大特性
封裝根據職責將屬性和方法封裝到乙個抽象的類中
繼承實現**的重用,相同的**不需要重複的編寫
多型不同的物件呼叫相同的方法,產生不同的執行結果,增加**的靈活度繼承的概念:子類擁有父類的所有方法和屬性
1) 繼承的語法
class 類名(父類名)
:pass
2) 專業術語
父類是子類的基類,子是父類的派生類,子類從父類派生
3) 繼承的傳遞性
子類擁有父類以及父類的父類中封裝的所有屬性和方法
提問
哮天犬能夠呼叫cat
類中定義的catch
方法嗎?
答案
不能,因為哮天犬和cat
之間沒有繼承關係
應用場景
[外鏈轉存失敗(img-sosgbsnn-1564543542456)(assets/012_繼承方法的重寫.png)]
重寫父類方法有兩種情況:
覆蓋父類的方法
對父類方法進行擴充套件
1) 覆蓋父類的方法
具體的實現方式,就相當於在子類中定義了乙個和父類同名的方法並且實現重寫之後,在執行時,只會呼叫子類中重寫的方法,而不再會呼叫父類封裝的方法
2) 對父類方法進行擴充套件
就可以使用
擴充套件的方式
在子類中重寫父類的方法
在需要的位置使用super().父類方法
來呼叫父類方法的執行
**其他的位置針對子類的需求,編寫子類特有的**實現
關於super
呼叫父類方法的另外一種方式(知道)
在python 2.x
時,如果需要呼叫父類的方法,還可以使用以下方式:
父類名.方法(self)
提示 python物件導向基礎 python物件導向基礎
面向過程與物件導向 面向過程的程式設計的核心是過程 流水線式思維 過程即解決問題的步驟,面向過程的設計就好比精心設計好的一條流水線,考慮周全什麼時候處理什麼東西。優點 極大降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點 一套流水線或者流程就是解決乙個問題,牽一髮而動全身。應用場景 一...
python基礎複習(三)物件導向
為什麼使用物件導向?物件導向是將資料和函式繫結進行封裝,提高 的重複利用率,以此提高開發效率。提高復用性 提高開發效率類 類是對一類事物的描述物件 物件是具體的事物,可以直接使用的二者關係 類是物件的模板,物件是類的例項體現類的構成 類名 屬性 方法類的屬性 類屬性 例項屬性 self 私有屬性1....
Python之物件導向 物件導向基礎
一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...