「關注我,和我一塊兒放下靈魂,讓靈魂去搬磚。」正則表達式
Python版本3.8.0,開發工具:Pycharm編程
面向對象編程(Object Oriented Programming,OOP),是使用對象(Objects)做爲核心的編程方式。進而就能夠把對象(Objects)的數據和運算過程封裝(Encapsulate)在內部,而外部僅能根據事先設計好的界面(Interface)與之溝通。bash
對象的構成:微信
舉個例子:建立一個對象Teacher(老師)函數
Teacher的屬性有name(姓名)、age(年齡)等,Teacher 的方法有teacher(上課)、study(學習)工具
EnglishTeacher(英語老師)也屬於Teacher,因此EnglishTeacher能夠繼承Teacher而且使用Teacher的屬性和方法post
MathTeacher(數學老師)的teach方法不一樣於EnglishTeacher,因此能夠對方法進行重寫。學習
__private_attrs:兩個下劃線開頭,聲明該屬性爲私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。開發工具
在類的內部,使用 def關鍵字來定義一個方法,與通常函數定義不一樣,類方法必須包含參數 self,且爲第一個參數,self 表明的是類的實例。ui
self 的名字並非規定死的,也可使用 this,可是最好仍是按照約定用 self。
__private_method:兩個下劃線開頭,聲明該方法爲私有方法,只能在類的內部調用 ,不能在類的外部調用。在類內部調用self.__private_methods。
Class 使用 class 關鍵字進行定義。class name使用駝峯標識,例如MyClass
# 定義類
class Teacher:
def __init__(self, name, age):
self.name = name
self.age = age
def teach(self):
print("{0} teach".format(self.name))
def study(self):
print("{0} study".format(self.name))
# 建立類的實例
my_teacher = Teacher("zhangsan", 18)
my_teacher.teach()
# 輸出
zhangsan teach
複製代碼
注:
繼承,顧名思義,新的事物擁有舊事物的特徵,而且能夠傳遞下去。
在Python中,繼承的範圍更廣,好比定義一個實例Teacher,則新的實例EnglishTeacher是老師,因此能夠繼承Teacher。老師有姓名、年齡、性別等屬性,有上課、學習等方法,則英語老師繼承老師的全部屬性和方法。
再好比,定義一個實例Mother母親,定義一個實例Father父親,則新的實例Kids孩子不但能夠繼承Mother還能夠繼承Father。
以上兩個例子分別是單繼承和多繼承。
Python能夠實現單繼承和多繼承
# # EnglishTeacher繼承Teacher類
class EnglishTeacher(Teacher):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def teach(self):
print("{0} teach".format(self.name))
# 建立類的實例
teacher = EnglishTeacher("xiaomeng", 10)
teacher.teach()
# 輸出
xiaomeng teach
複製代碼
# 定義父親類
class Father:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("{0} is father".format(self.name))
# 定義母親類
class Mother:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("{0} is mother".format(self.name))
# Kid繼承Father和Mother類
class Kid(Father, Mother):
def speak(self):
print("{0} is kid".format(self.name))
# 建立類的實例
kid = Kid("student", 6)
kid.speak()
# 輸出
baby is kid
複製代碼
在咱們定義的老師實例中,老師有上課、學習兩個方法,可是英語老師上英語課,數學老師上數學課,不一樣實例的老師有不一樣的方法實現,這個時候,咱們在建立不一樣老師實例的過程當中須要對方法進行重寫。
# 建立類的實例
class EnglishTeacher(Person):
# 重寫run 方法
def teach(self):
print("english teacher {0} teach".format(self.name))
student = Student("xiaomeng", 10)
student.walk()
# 輸出
english teacher xiaomeng teach
複製代碼
運算符重載相似於方法重寫,不過運算符的方法屬於Python定義好的,咱們在建立的時候不須要聲明均可以進行重載!
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
# 對 + 運算符重載
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
# 輸出
Vector (7, 8)
複製代碼
Python系列會持續更新,從基礎入門到進階技巧,從編程語法到項目實戰。若您在閱讀的過程當中發現文章存在錯誤,煩請指正,很是感謝;若您在閱讀的過程當中能有所收穫,歡迎一塊兒分享交流。
若是你也想和我一塊兒學習Python,能夠關注個人微信公衆號
學習Python,咱們不僅是說說而已