Python是一種面向?qū)ο蟮木幊陶Z言,支持類的重載。類的重載是指在一個類中定義多個同名函數(shù),但是這些函數(shù)的參數(shù)個數(shù)或者參數(shù)類型不同,從而實(shí)現(xiàn)不同的功能。在Python中,類的重載可以通過函數(shù)的參數(shù)來實(shí)現(xiàn),例如:
class Rectangle: def __init__(self, width, height): self.width = width self.height = height def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) def __str__(self): return "Rectangle with width {0} and height {1}".format(self.width, self.height) def __eq__(self, other): if isinstance(other, Rectangle): return self.width == other.width and self.height == other.height return False
在上述代碼中,我們定義了一個Rectangle類,其中包含了一個初始化函數(shù)__init__、一個計算面積的函數(shù)area、一個計算周長的函數(shù)perimeter、一個返回類的字符串表示的函數(shù)__str__、以及一個檢查兩個矩形是否相等的函數(shù)__eq__。這些函數(shù)都是同名函數(shù),但是參數(shù)和功能都不同。
下面我們來看看如何調(diào)用這些函數(shù):
r1 = Rectangle(5, 3) r2 = Rectangle(3, 5) r3 = Rectangle(5, 3) print(r1.area()) # 輸出: 15 print(r2.perimeter()) # 輸出: 16 print(r3) # 輸出: Rectangle with width 5 and height 3 print(r1 == r2) # 輸出: False print(r1 == r3) # 輸出: True
在上述代碼中,我們創(chuàng)建了三個Rectangle對象,分別計算了他們的面積和周長,輸出了他們的字符串表示和比較兩個矩形是否相等的結(jié)果。可以看到,我們通過參數(shù)的不同,實(shí)現(xiàn)了多個同名函數(shù),從而方便了類的使用。