Python代码逻辑分离,从减少if...else开始

今天带大家学习如何利用对象(类)的特性来解决冗长的if…else条件判断

前言

if…else…条件语句我相信学习python的童鞋们都喜欢用,例如下一面这一段

def func(param):
    if param == "cat":
        print("这是一只猫咪")
    elif param == "dag":
        print("这是一直狗狗")
    elif param == "pig":
        print("这是一只小猪")
    ...
    else:
      print("不知道是什么")

写很长的一段if语句来判断不同的情况

这段代码的使用场景是满足用户可以完成在不同场景进行对应的操作,对应后端的代码,你肯定能想到最简单的实现方式就是上面的if … else 语句。但是随着你的场景不断的增加,你的if else 代码也跟着越来越长了。这带来的一个问题就是系统的可扩展性差,后续的维护会变得举步维艰

对象特性

对象的三大特性:封装、继承、多态

封装:根据职责将属性和⽅法封装到⼀个抽象的类中; 增强代码的安全性

继承:实现代码的重⽤,相同的代码不需要重复的编写; 增强代码的可重用性

多态:不同的对象调⽤相同的⽅法,产⽣不同的执⾏结果; 增加代码的灵活度,增强代码的可扩展性

定义基础类

首先,我们将定义一个基础类,它将作为不同条件的父类。我们将在这个类中定义一个通用的方法,用于执行操作。

class Animal():
    def execute(self):
        pass

创建子类

接下来,我们将创建不同的类来表示不同的条件,每个类都会根据条件来执行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()方法进行了重写.

构建实例

我们可以用一个字典或者工厂方法来实现通过一个支付类型来找到对应的具体支付实例对象。

dict_name = {
     "cat": Cat(),
     "dog": Dog(),
     "pig": Pig(),
}

替换if else

创建一个函数,利用dict_name字段的关键字条件调用不的类执行execute()方法.

def func(anmial):
  dict_name.get(animal).execute()

# 执行函数
func("cat")
# 输出:say miao~miao~!

func("dog")
# 输出:say wang~wang~!

func("pig")
# 输出:say hang~hang~!

使用这种方式可以更好的将代码逻辑分离开来,比起冗长的if else,直接使用func函数是不是看起来简单多了。

通过使用对象特性,我们将条件判断从if…else语句中移出,代之以使用不同类来实现不同的操作。这种方法的好处是,我们可以在代码中更清楚地看到每个条件对应的操作,特别是对于那种需要判断很多中条件,提高了可读性和可维护性

最后,我想告诉大家的是,并不是什么场景都非要用类的特性来解决 if…else 语句的。如果 if else 中的逻辑本来就很清晰,就没必要生搬硬套用上面的方法去解决了,对此我们需要根据实际业务去随机应变
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值