創(chuàng)建子類(lèi)
接下來(lái),我們將創(chuàng)建不同的類(lèi)來(lái)表示不同的條件,每個(gè)類(lèi)都會(huì)根據(jù)條件來(lái)執(zhí)行execute()方法來(lái)做某些事。
class Cat(Animal):
def execute(self):
print("say miao~miao~!")
class Dog(Animal):
def execute(self):
print("say wang~wang~!")
class Pig(Animal):
def execute(self):
print("say hang~hang~!")
在這里我們會(huì)用到對(duì)象的其中一個(gè)特性:繼承,我們繼承的基類(lèi)Animal
,并且對(duì)execute()
方法進(jìn)行了重寫(xiě).
構(gòu)建實(shí)例
我們可以用一個(gè)字典或者工廠方法來(lái)實(shí)現(xiàn)通過(guò)一個(gè)支付類(lèi)型來(lái)找到對(duì)應(yīng)的具體支付實(shí)例對(duì)象。
dict_name = {
"cat": Cat(),
"dog": Dog(),
"pig": Pig(),
}
替換if else
創(chuàng)建一個(gè)函數(shù),利用dict_name
字段的關(guān)鍵字條件調(diào)用不的類(lèi)執(zhí)行execute()
方法.
def func(anmial):
dict_name.get(animal).execute()
# 執(zhí)行函數(shù)
func("cat")
# 輸出:say miao~miao~!
func("dog")
# 輸出:say wang~wang~!
func("pig")
# 輸出:say hang~hang~!
使用這種方式可以更好的將代碼邏輯分離開(kāi)來(lái),比起冗長(zhǎng)的if else,直接使用func函數(shù)是不是看起來(lái)簡(jiǎn)單多了。
通過(guò)使用對(duì)象特性,我們將條件判斷從if...else語(yǔ)句中移出,代之以使用不同類(lèi)來(lái)實(shí)現(xiàn)不同的操作。這種方法的好處是,我們可以在代碼中更清楚地看到每個(gè)條件對(duì)應(yīng)的操作,特別是對(duì)于那種需要判斷很多中條件,提高了可讀性和可維護(hù)性。
最后,我想告訴大家的是,并不是什么場(chǎng)景都非要用類(lèi)的特性來(lái)解決 if...else 語(yǔ)句的。如果 if else 中的邏輯本來(lái)就很清晰,就沒(méi)必要生搬硬套用上面的方法去解決了,對(duì)此我們需要根據(jù)實(shí)際業(yè)務(wù)去隨機(jī)應(yīng)變。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4263瀏覽量
62243 -
代碼
+關(guān)注
關(guān)注
30文章
4700瀏覽量
68110 -
python
+關(guān)注
關(guān)注
54文章
4759瀏覽量
84298
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論