解释Python类方法链
在面向对象编程语言中,方法是可以执行特定任务以产生所需输出的一段代码。方法是在类中创建的,并由类的对象调用或调用。
方法在编程中非常有用,因为它们通过将复杂的代码分解为可管理的块来提供了代码的模块化。方法可以独立于其他方法工作,因此很容易在程序中检查各个功能。
Python中的方法链
方法链是一种编程风格,其中多个方法调用顺序发生。它消除了在每个中间步骤中分配变量的麻烦,因为每个调用都对同一对象执行操作,然后将对象返回给下一个调用。
方法链接有两个有用的优点−
- 它可以减少总体代码的长度,因为不需要创建无数的变量。
-
它可以增加代码的可读性,因为方法按顺序调用。
示例
在这个简单的Python方法链示例中,不同的CalculatorFunctions包含多个需要由计算器对象调用的方法。而不是一个接一个地调用,所有函数都被链接在一起,在一行中调用。
为了使方法链起作用,每个方法都必须返回类的对象,即在这种情况下是 self 。
class CalculatorFunctions():
def sum(self):
print("Sum called")
return self
def difference(self):
print("Difference called")
return self
def product(self):
print("Product called")
return self
def quotient(self):
print("Quotient called")
return self
if __name__ == "__main__":
calculator = CalculatorFunctions()
# Chaining all methods of CalculatorFunctions
calculator.sum().difference().product().quotient()
输出
以下是上述代码的输出结果 –
Sum called
Difference called
Product called
Quotient called
示例
在这个Python链式调用内置方法的示例中,先将字符串按空格分割,然后将最后一个元素(星期六、星期日)按逗号分割,以单独的实体输出。
days_of_week = "Monday Tuesday Wednesday Thursday Friday Saturday,Sunday"
weekend_days = days_of_week.split()[-1].split(',')
print(weekend_days)
输出
以下是上述代码的输出:
['Saturday', 'Sunday']
使用Pandas进行方法链
Pandas是一个用于解决数据科学和机器学习领域复杂问题的Python包。Pandas包含许多内置方法,可以链接在一起以减少代码长度。
示例
链接Pandas方法
在此示例中,首先读取一个CSV文件并分配给一个数据框。之后,使用不同的Pandas方法链接在一起以操作CSV文件。
.assign() 方法创建百分比列, .drop 删除一个性别列, .sort_value 根据百分比对数据进行排序, .head 从CSV文件中获取前三个结果。
import pandas as pd
data_frame = pd.read_csv('E:/Marks.csv', index_col = 0)
# Chaining different methods of pandas
chained_data_frame = (data_frame.assign(Percentage = (data_frame['Marks']*100)/70)
.drop(columns = 'Gender')
.sort_values('Percentage', ascending = False)
.head(3))
print(chained_data_frame)
输出
以下是上面代码的输出:
Age Marks Percentage
ID
4 40 68 97.142857
2 20 65 92.857143
3 30 60 85.714286
使用NumPy进行方法链
NumPy是一个Python包,提供了对多维数组对象的支持,并提供多个用于在数组上执行极快操作的函数。就像pandas方法一样,NumPy方法也可以链式调用。
示例
链接NumPy方法
在此示例中,使用不同的NumPy方法链接以创建一个4×4的矩阵。.arange()方法从1到32的范围内以步长为2创建一个矩阵,.reshape将矩阵调整为4×4的配置,.clip函数用于将矩阵中的最小元素设置为9,最大元素设置为25。
import numpy as np
# Chaining different methods of numpy
chained_numpy = np.arange(1, 32, 2).reshape(4, 4).clip(9, 25)
print(chained_numpy)
输出
以下是上述代码的输出结果
[[ 9 9 9 9]
[ 9 11 13 15]
[17 19 21 23]
[25 25 25 25]]