一、什麼是面向對象編程?
在計算機科學中,面向對象編程(Object-Oriented Programming,簡稱OOP)是一種程序設計范型,它將對象作為程序的基本單元,將數據和行為封裝其中,以降低複雜度並增加靈活性。
在OOP中,類是對象的模板,對象是類的實例。通過將數據與方法綁定在類中,實現了封裝性、繼承性和多態性等特性。
二、Python中的Class
Python是一門面向對象的編程語言,支持面向對象編程範式。通過使用關鍵字“class”定義類,定義方法可以在類內部進行。
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print("汪汪!")
dog = Dog("小黑", 3)
print(dog.name)
print(dog.age)
dog.bark()
上述代碼中,我們定義了一個Dog類,其中使用“__init__”方法初始化對象時傳入的參數,並且定義了一個bark()方法。在類外部,我們定義了一個名為dog的對象,輸出了該對象的屬性和方法。
三、類的三大特性
1、封裝性
封裝性是面向對象編程最重要的特性之一。它將數據和方法封裝在一個類中,實現了數據的保護,阻止數據被意外地修改或者篡改。
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
def introduce(self):
print("我叫%s,今年%d歲" % (self._name, self._age))
person = Person("小明", 20)
person._name = "Tom" # 改變屬性
person.introduce()
上述代碼中,我們使用“_”將定義的屬性作為保護屬性,實現數據的保護。如果在類外部直接修改屬性,則可能會引起不可預料的結果。
2、繼承性
繼承性是OOP中的另一個重要特性。它允許類繼承另一個類的屬性和方法,並且可以在此基礎上添加新的功能。
class Animal:
def __init__(self, name):
self._name = name
def eat(self):
print("%s is eating" % self._name)
class Dog(Animal):
def bark(self):
print("汪汪!")
dog = Dog("小黃")
dog.eat()
dog.bark()
上述代碼中,我們定義了一個Animal類,其中有一個eat()方法。在Dog類中,我們使用“Animal”類做為父類,讓Dog類繼承了Animal類的eat()方法,並且新增了一個bark()方法。
3、多態性
多態性是OOP的第三個主要特性,它允許相同的方法在不同的類中具有不同的表現形式。
class Animal:
def sound(self):
pass
class Dog(Animal):
def sound(self):
print("汪汪!")
class Cat(Animal):
def sound(self):
print("喵喵!")
def animal_sound(animal):
animal.sound()
dog = Dog()
cat = Cat()
animal_sound(dog)
animal_sound(cat)
上述代碼中,我們定義了Animal類作為父類,讓Dog類和Cat類繼承該類。由於子類重寫父類的方法,所以在運行“animal_sound()”函數時,傳入的dog和cat會分別調用自己的sound()方法。
四、總結
Python中的類實現了OOP中的三大特性:封裝性、繼承性和多態性。方法和數據可以被封裝在類中,保護數據的安全性。繼承性允許類從一個父類中繼承功能,並且在此基礎上新增新功能。多態性則允許不同的對象具有相同的接口,但表現形式可能不同。這些特性為Python程序員提供了極大的靈活性,使得代碼更加可維護、可擴展。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/246379.html