用对象的形式优化if-else方法
时间: 2023-03-22 18:01:35 浏览: 78
使用对象的形式可以优化if-else语句,可以使用以下两种方法:
1. 使用多态
可以使用多态来优化if-else语句。假设有一组类A、B、C,它们都有一个方法doSomething(),而且根据具体的类型,doSomething()的行为不同。可以定义一个基类Base,然后在Base中定义doSomething()方法,让每个类都继承Base,并实现自己的doSomething()方法。这样就可以通过调用对象的方法来执行不同的操作,而不必使用if-else语句来判断对象的类型。
例如:
```
class Base:
def doSomething(self):
pass
class A(Base):
def doSomething(self):
print("Do something for A")
class B(Base):
def doSomething(self):
print("Do something for B")
class C(Base):
def doSomething(self):
print("Do something for C")
# 使用多态
objects = [A(), B(), C()]
for obj in objects:
obj.doSomething()
```
这样就可以通过调用对象的doSomething()方法,执行不同的操作,而不必使用if-else语句。
2. 使用字典
另一种方法是使用字典来实现。假设有一个需要根据不同的输入参数执行不同操作的函数,可以使用字典来将输入参数与对应的函数关联起来。这样就不必使用if-else语句来判断输入参数的类型。
例如:
```
def doSomethingA():
print("Do something for A")
def doSomethingB():
print("Do something for B")
def doSomethingC():
print("Do something for C")
# 使用字典
actions = {
"A": doSomethingA,
"B": doSomethingB,
"C": doSomethingC
}
# 调用函数
action = "A"
actions[action]()
```
这样就可以使用字典来将输入参数与对应的函数关联起来,而不必使用if-else语句来判断输入参数的类型。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)