Python作為一種面向對象語言,繼承和組合是其最基本的面向對象編程方式之一。這種方式通過把一些公共的屬性和方法提取出來,使代碼更加簡潔易讀,方便維護和擴展。
繼承是指一個類可以派生出子類,在子類中可以直接使用父類中的屬性和方法。例如以下代碼:
class Animal: def __init__(self, name): self.name = name def info(self): print("This is an animal. Its name is", self.name) class Dog(Animal): def __init__(self, name): super().__init__(name) def sound(self): print(self.name, "barks.") my_dog = Dog("Bobby") my_dog.info() # 輸出:"This is an animal. Its name is Bobby" my_dog.sound() # 輸出:"Bobby barks."
在這個例子中,Dog類繼承了Animal類,并且通過調用super()函數來調用父類的初始化方法,以便在實例化時能夠獲得基本屬性和方法。在子類中,我們還可以重寫父類中的方法以滿足特定的需求。
組合是指把不同類的對象放在一起,用來實現更復雜的功能。例如以下代碼:
class CPU: def __init__(self, model): self.model = model def info(self): print("This is a CPU. Its model is", self.model) class Computer: def __init__(self, brand, cpu): self.brand = brand self.cpu = cpu def info(self): print("This is a computer. Its brand is", self.brand) self.cpu.info() my_cpu = CPU("i7") my_computer = Computer("Dell", my_cpu) my_computer.info() # 輸出:"This is a computer. Its brand is Dell",“This is a CPU. Its model is i7”
在這個例子中,我們定義了兩個類,一個是CPU類,一個是Computer類。在Computer類的初始化函數中,我們傳入了一個CPU的實例(也就是my_cpu對象),并將其保存在Computer類的一個屬性(也就是self.cpu)中。之后,在Computer類的info方法中,我們調用了cpu的info()方法。這就是組合的效果。我們將CPU對象與Computer對象組合在一起來實現更復雜的功能。