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