1. 程式人生 > >純程式碼實用教材,python的面向物件思維與類的一些方法!

純程式碼實用教材,python的面向物件思維與類的一些方法!

面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、CAD技術、人工智慧等領域。面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階段後的產物。

  學習Python中有不明白推薦加入交流群
                號:960410445
                群裡有志同道合的小夥伴,互幫互助,
                群裡有不錯的視訊學習教程和PDF!

 

純程式碼實用教材,python的面向物件思維與類的一些方法!

 

純程式碼實用教材,python的面向物件思維與類的一些方法!

 

What Is The Object Oriented In Python3?

物件(object ):通過類定義的資料結構。包括兩個資料成員(類變數和例項變數)和方法。

類(Class): 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。

資料成員:類變數或者例項變數用於處理類及其例項物件的相關的資料。

類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。

例項變數:在類的宣告中,屬性是用變數來表示的。這種變數就稱為例項變數,是在類宣告的內部但是在類的其他成員方法之外宣告的。

方法:類中定義的函式。

純程式碼實用教材,python的面向物件思維與類的一些方法!

 

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()

純程式碼實用教材,python的面向物件思維與類的一些方法!

 

輸出結果為: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])