在Python中,對象是由類創建的,它是類的實例。在Python中,類是一種定義,描述了可以從中創建對象的所有屬性和方法。創建類是創建對象的藍圖。下面將從多個方面詳細闡述Python中創建對象的藍圖。
一、類的定義
在Python中,可以使用關鍵字定義類。定義時需要指定類的名稱和父類(也可以沒有父類)。類名一般採用CapWords命名規範,即每個單詞首字母大寫,不包含下劃線。如下所示定義名為MyClass的類:
class MyClass: pass
上面的代碼創建了一個名為MyClass的類,該類沒有任何屬性或方法。
類的方法可以分為兩種:實例方法和類方法。實例方法需要創建類的實例,才能調用該方法。類方法無需實例,但仍然可以通過類調用。
下面的示例程序演示了類的定義和實例方法的使用:
class Car: def __init__(self,make,model): self.make = make self.model = model self.odometer_reading = 0 def get_descriptive_name(self): long_name = f"{self.make} {self.model}" return long_name.title() def read_odometer(self): print(f"This car has {self.odometer_reading} miles on it.") my_new_car = Car('audi','a4') print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()
執行結果如下:
Audi A4 This car has 0 miles on it.
類Car有三個屬性:make,model和odometer_reading。屬性odometer_reading的默認值為0。類Car還有兩個實例方法:get_descriptive_name和read_odometer。調用實例方法get_descriptive_name返回汽車的描述性名稱,調用實例方法read_odometer來讀取里程錶讀數。
二、繼承
繼承是面向對象編程中的一個重要概念。子類通過繼承父類的方法和屬性來實現自己的功能。在Python中,可以直接通過將父類作為參數傳遞給子類來實現繼承。子類可以重寫父類的方法,並添加自己的方法。
下面的示例程序演示了一個子類ElectricCar繼承自父類Car的情況:
class Car: def __init__(self,make,model): self.make = make self.model = model self.odometer_reading = 0 def get_descriptive_name(self): long_name = f"{self.make} {self.model}" return long_name.title() def read_odometer(self): print(f"This car has {self.odometer_reading} miles on it.") class ElectricCar(Car): def __init__(self,make,model,year): super().__init__(make,model) self.battery_size = 75 self.year = year def describe_battery(self): print(f"This car has a {self.battery_size}-kWh battery.") my_tesla = ElectricCar('tesla','model s',2019) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery()
執行結果如下:
Tesla Model S This car has a 75-kWh battery.
類ElectricCar繼承自父類Car,子類中定義的方法describe_battery是父類中沒有的方法。在子類ElectricCar的__init__方法中,通過super()函數調用了父類構造函數,以便初始化從父類繼承過來的屬性。
三、類的屬性
在Python中,屬性存儲在實例中。有兩種類型的屬性:實例屬性和類屬性。實例屬性是每個實例都有自己的屬性,它們的值可能不同。類屬性由所有實例共享,因此它們的值在所有實例中都相同。
下面的示例程序演示了類屬性的創建和使用:
class Dog: number_of_legs = 4 def __init__(self,name,age): self.name = name self.age = age my_dog = Dog('Willie',6) your_dog = Dog('Lucy',3) print(my_dog.name + " has " + str(my_dog.number_of_legs) + " legs.") print(your_dog.name + " has " + str(your_dog.number_of_legs) + " legs.") print(Dog.number_of_legs)
執行結果如下:
Willie has 4 legs. Lucy has 4 legs. 4
類Dog有兩個實例屬性:name和age,它的類屬性number_of_legs用於保存狗的腿數。在類Dog的定義中,number_of_legs被放在類的外面,表示這是一個類屬性。通過調用類可以訪問它的類屬性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/150944.html