純程式碼實用教材,python的面向物件思維與類的一些方法!
面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、CAD技術、人工智慧等領域。面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階段後的產物。
學習Python中有不明白推薦加入交流群
號:960410445
群裡有志同道合的小夥伴,互幫互助,
群裡有不錯的視訊學習教程和PDF!
What Is The Object Oriented In Python3?
物件(object ):通過類定義的資料結構。包括兩個資料成員(類變數和例項變數)和方法。
類(Class): 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。
資料成員:類變數或者例項變數用於處理類及其例項物件的相關的資料。
類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。
例項變數:在類的宣告中,屬性是用變數來表示的。這種變數就稱為例項變數,是在類宣告的內部但是在類的其他成員方法之外宣告的。
方法:類中定義的函式。
How To Realize The Object-Oriented In Python3?
類
01
1#類的定義 2class ClassName: 3 4<statement-1> 5 6<statement-N>
02
1#類的屬性 2class MyClass: 3i = 12345 4# 例項化類 5x = MyClass() 6# 訪問類的屬性 7print("MyClass 類的屬性 i 為:", x.i)
03
1#類的私有屬性 2 3__private_attrs: 4#在類內部的方法中使用時 5self.__private_attrs
04
1#類的方法 2class MyClass: 3#在類地內部,使用 def 關鍵字來定義一個方法,與一般函式定義不同,類方法必須包含引數 self,且為第一個引數,self 代表的是類的例項。 4def f(self): 5return 'hello world' 6# 例項化類 7x = MyClass() 8# 訪問類的方法 9print("MyClass 類的方法 f 輸出為:", x.f())
05
1#兩個下劃線開頭,宣告該方法為私有方法,只能在類的內部呼叫,不能在類地外部調 2#類的私有方法 3__private_method: 4#self.__private_methods類有一個名為 __init__() 的特殊方法(構造方法),該方法在類例項化時會自動呼叫
完整程式碼
1# 類定義 2class people: 3# 定義基本屬性 4name = '' 5age = 0 6# 定義私有屬性,私有屬性在類外部無法直接進行訪問 7__weight = 0 8 9# 定義構造方法 10def __init__(self, n, a, w): 11 self.name = n 12 self.age = a 13 #定義私有方法 14 self.__weight = w 15 16def speak(self): 17 print("%s 說: 我 %d 歲。" % (self.name, self.age)) 18 19 20# 例項化類 21p = people('runoob', 10, 30) 22p.speak()
輸出結果為:runoob 說: “我10歲”。
繼承
1class DerivedClassName(BaseClassName1): 2<statement-1> 3. 4. 5. 6<statement-N>
單繼承
1# 單繼承示例 2class student(people): 3grade = '' 4 5def __init__(self, n, a, w, g): 6 # 呼叫父類的構函 7 people.__init__(self, n, a, w) 8 self.grade = g 9 10# 覆寫父類的方法 11def speak(self): 12 print("%s 說: 我 %d 歲了,我在讀 %d 年級" % (self.name, self.age, self.grade)) 13 14 15s = student('ken', 10, 60, 3) 16s.speak()
多繼承
1# 另一個類,多重繼承之前的準備 2class speaker(): 3topic = '' 4name = '' 5 6def __init__(self, n, t): 7 self.name = n 8 self.topic = t 9 10def speak(self): 11 print("我叫 %s,我是一個演說家,我演講的主題是 %s" % (self.name, self.topic)) 12 13 14# 多重繼承 15class sample(speaker, student): 16a = '' 17 18def __init__(self, n, a, w, g, t): 19 student.__init__(self, n, a, w, g) 20 speaker.__init__(self, n, t) 21 22 23test = sample("Tim", 25, 80, 4, "Python") 24test.speak() # 方法名同,預設呼叫的是在括號中排前地父類的方法
總結:
Python是一門面向物件的語言。就是將任何事情都當做物件象去看待。因此會有很多的物件,而我們要將不同物件進行分類,就有了類的概念。不同的人有眼睛鼻子嘴巴耳朵等屬性,有吃飯睡覺讀書寫字等行為,因此物件也有自己的屬性和行為(方法)。
Python類的基本方法
1. __str__和__repr__方法
功能:
列印類的屬性。
呼叫__str__樣例:
demo = Demo()print (demo)
呼叫__repr__樣例
demo = Demo()demo
2. __len__方法
功能:
獲取字串長度
樣例:
demo = Demo() print(len(demo))
3. __iter__方法
功能:
迭代的意思是重複做一些事很多次---就像在迴圈中做的那樣。__iter__ 方法返回一個迭代器,所謂迭代器就是具有next方法的物件,在呼叫next方法時,迭代器會返回它的下一個值。如果next方法被呼叫,但迭代器沒有值可以返回,就會引發一個StopIteration異常。
樣例:
class TestIterator: value = 0 def next(self): self.value += 1 if self.value > 10: raise StopIteration return self.value def __iter__(self): return self>>> ti = TestIterator()>>> list(ti)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
4. __getitem__方法
功能:
希望通過索引獲取資料。
樣例:
class DataBase: '''Python 3 中的類''' def __init__(self, id, address): '''初始化方法''' self.id = id self.address = address self.d = {self.id: 1, self.address: "192.168.1.1", } def __getitem__(self, key): # return self.__dict__.get(key, "100") return self.d.get(key, "default") data = DataBase(1, "192.168.2.11") print(data["hi"]) print(data[data.id])