Python是一門面向對象的編程語言,在Python中,一切都是對象,包括函數、字符串、數字等等,甚至連模塊也可以被視為對象。然而,在Python中,對象與類之間是一種特殊的關係,即對象是類的實例。
一、創建類及實例化
在Python中,我們需要使用關鍵字“class”來定義一個類。定義類的時候,我們需要考慮類的名稱、類的屬性、類的方法。例如,下面代碼示例中,我們定義了一個名為“Person”的類,它包含“name”和“age”兩個屬性,以及“speak”方法。
class Person: def __init__(self, name, age): self.name = name self.age = age def speak(self): print("My name is", self.name, ", I'm", self.age, "years old.")
實例化是指根據類定義創建對象的過程。我們可以使用類的名稱來實例化一個對象,並且可以通過構造函數為該對象的屬性賦值。例如,下面的代碼示例創建了一個名為“p1”的對象,它的名字為“Tom”,年齡為18歲,然後調用了“speak”方法。
p1 = Person("Tom", 18) p1.speak()
上述代碼輸出的結果為:“My name is Tom, I’m 18 years old.”。
二、對象與類之間的關係
對象是類的實例,這意味着一個類可以有許多對象。例如,我們可以通過實例化多個“Person”對象,分別為這些對象的屬性賦值,然後調用它們的方法。
p1 = Person("Tom", 18) p2 = Person("Jerry", 20) p3 = Person("Mike", 22) p1.speak() # 輸出 "My name is Tom, I'm 18 years old." p2.speak() # 輸出 "My name is Jerry, I'm 20 years old." p3.speak() # 輸出 "My name is Mike, I'm 22 years old."
可以看出,雖然這三個對象的屬性不同,但它們的方法都是相同的。這是因為它們都是同一個類的實例。
三、對象屬性與類屬性
在Python中,對象屬性和類屬性是兩個不同的概念。對象屬性是指屬於實例對象的屬性,而類屬性則屬於類。
例如,我們可以給“Person”類添加一個類屬性“count”,來統計該類實例化的數量:
class Person: count = 0 # 類屬性 def __init__(self, name, age): self.name = name # 對象屬性 self.age = age # 對象屬性 Person.count += 1 # 每次實例化對象時類屬性加1 def speak(self): print("My name is", self.name, ", I'm", self.age, "years old.") print(Person.count) # 輸出0 p1 = Person("Tom", 18) print(Person.count) # 輸出1 p2 = Person("Jerry", 20) print(Person.count) # 輸出2
可以看出,每次實例化對象時,“Person”類的類屬性“count”都會加1。通過訪問類屬性,我們可以統計類的實例化數量,實現一些與類相關的操作。
四、繼承
在Python中,繼承是面向對象編程中的常見方式之一。它允許我們創建一個類,該類具有另一個類的所有屬性和方法。被繼承的類稱為“父類”或“超類”,繼承該類的類稱為“子類”或“派生類”。
例如,下面的代碼示例中,我們創建了一個名為“Student”的子類,並繼承了“Person”父類。此外,我們添加了一個新屬性“major”,並重寫了父類的“speak”方法,使其輸出的內容與父類的不同。
class Student(Person): def __init__(self, name, age, major): super().__init__(name, age) self.major = major def speak(self): print("My name is", self.name, ", I'm", self.age, "years old. My major is", self.major) s = Student("Kate", 20, "Computer Science") s.speak() # 輸出 "My name is Kate, I'm 20 years old. My major is Computer Science."
可以看出,子類“Student”具有父類“Person”的所有屬性和方法,還添加了一個新屬性“major”,並重寫了父類的“speak”方法。通過繼承和重寫,我們可以實現代碼的復用和擴展。
原創文章,作者:BGFT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/142303.html