物件(Object)為類別(Class)的實例(Instance),我們可以透過編程創建模仿現實生活的物體,並給予屬性。
至於物件和類別有什麼區別呢?
我們舉個生活上的例子:生活中有許多球類,球種就是類別,而球的個體就是物件。
接下來,我們來實際撰寫class類別:
class ball:
#初始化
def__init__(self, type, color, year):
self.type = type
self.color = color
self.year = year
def play(self):
print(self.type + "is playing.")
ball1 = ball("Soccer", "white", 2000)
ball2 = ball("baseball", "white", 2020)
ball1.play()
print(ball1, type)
print(ball1, color)
類別變數(Class Variables)是屬於類別本身的變數,它們的值對於同一類別的所有實例都是共享的。
換句話說,當類別中的實例對類別變數進行修改時,這一變更會在該類別的所有其他實例中反映出來。
類別變數通常用於儲存與類別相關的通用資訊,這些資訊對於所有實例都具有相同的意義。要定義類別變數,可以直接在類別的定義中、方法之外進行賦值,而不是在 init 方法內。
類別變數能有效地節省記憶體,並在需要共享資料時提供便利,是物件導向程式設計中一個重要的概念。
繼承(Inheritance)是 Python 物件導向程式設計中的一個重要概念,我們建立一個新類別,並從現有的類別中繼承屬性和方法,從而實現程式碼的重用與擴展。
被繼承的類別稱為「父類別」(Parent Class)或「基礎類別」(Base Class),而新的類別則稱為「子類別」(Child Class)或「衍生類別」(Derived Class)。
子類別不僅可以擁有父類別的所有屬性和方法,還可以根據需要添加自己的屬性和方法,或對父類別的某些方法進行覆寫(Override),以實現更特定的行為。
Python 支援多重繼承,這意味著子類別可以同時繼承多個父類別的特性。繼承使我們能夠以簡單明瞭的方式建立類別之間的關係,並且能夠提升程式的可維護性與可擴展性。
以下將透過範例來熟悉繼承的程式碼:
class People:
alive = True
def eat(self):
print("他正在吃飯")
def sleep(self):
print("他正在睡覺")
class Anna(People):
def run(self):
print("他正在跑步")
people = People()
people.eat()
anna = Anna()
anna.run()
anna.eat() #因為繼承了父類別,因此可使用
方法覆寫(Method Overriding)是物件導向中的一種特性,它能允許此類別重寫父類別的方法,以實現不同的功能或行為。
當子類別繼承了父類別後,通常會獲得父類別的所有方法和屬性,但在某些情況下,子類別需要針對特定需求修改父類別的方法。
此時,子類別可以透過使用相同的方法名稱,重新定義該方法,這個過程就是覆寫。
覆寫能夠讓子類別提供更具體或更適合該類別的功能,同時保留與父類別一致的介面。
以下我們將透過例子來進行覆寫練習:
class Girl:
def eat(self):
print("她在吃飯")
class Boy:
def drink(self):
print("他在喝水")
pass
class Nick(Boy):
def eat(self):
print("Nick在吃麵")
class Ike(Boy):
def eat(self):
print("Ike在吃水餃")
nick = Nick()
nick.nick()
ike = Ike()
ike.ike()
b = Boy()
b.eat() #其可繼承父類別(Girl)