Python是一門面向對象的編程語言。面向對象編程的一個重要概念是類(Class)。類是一種自定義的數據類型,它可以包含代碼和數據,用于創建對象。
定義一個類使用關鍵字class,它的名字通常是大寫字母開頭的。類中的代碼通常包含一個或多個方法(Method),用于描述對象的行為。
class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name)
上面的代碼定義了一個名為Person的類,它包含了一個構造函數__init__和一個方法say_hello。構造函數用于初始化類的屬性,而say_hello方法可以向控制臺輸出一條問候語。
構造函數的第一個參數self是必須的,它表示類的實例本身。當我們創建一個對象時,Python會自動將這個對象傳遞給self參數,我們可以用它訪問對象的屬性和方法。
創建一個類的實例使用類名和一對括號,這就像是調用一個函數一樣。我們可以給構造函數傳遞一些參數,這些參數將被用于初始化對象的屬性。
person = Person("Alice", 25) person.say_hello() # 輸出"Hello, my name is Alice"
上面的代碼創建了一個名為person的對象,并調用了它的say_hello方法。第一個輸出行中的字符串"Hello, my name is"來自于方法中使用的字符串常量,而第二個輸出行的"Alice"則是屬性name的值。
類也可以繼承其他類,這種稱為繼承(Inheritance)的機制可以讓我們更容易地定義新的類,并從已有的類中復用代碼。
例如,下面的代碼定義了一個新的類Student,它繼承自Person類。
class Student(Person): def __init__(self, name, age, major): super().__init__(name, age) self.major = major def study(self): print(self.name, "is studying", self.major)
在這個例子中,新類Student具有Person的所有屬性和方法,新的屬性major和方法study被增加了進去。super().__init__()等價于Person.__init__(self, name, age),用于調用父類的構造函數。
我們可以像下面這樣創建一個學生對象,并調用它的study方法。
student = Student("Bob", 20, "Computer Science") student.study() # 輸出"Bob is studying Computer Science"
類是Python表達式,也就是說它們可以嵌套在其他代碼中。為了定義一個類,你不必將它放在程序的頂層。你可以在函數中定義類,甚至可以在其他類的方法中定義類。
Python的類提供了封裝、繼承和多態等面向對象編程的基本特征。理解這些特征,可以幫助我們設計復雜的程序并重用代碼。