一、類和對象
通俗理解:類就是模板,對象就是通過模板創造出來的物體
類(Class)由3個部分構成:
類的名稱: 類名
類的屬性: 一組數據
類的方法: 允許對進行操作的方法 (行為)
二、魔法方法
在python中,有一些內置好的特定的方法,方法名是
“__xxx__”
,在進行特定的操作時會自動被調用,這些方法稱之為魔法方法。下面介紹幾種常見的魔法方法。
1.__init__方法 :初始化一個 類 ,在創建實例對象為其 賦值 時使用。
2.__str__方法:在將對象轉換成字符串 str(對象) 測試的時候,打印對象的信息。
3.__new__方法:創建并返回一個實例對象,調用了一次,就會得到一個對象。
4.__class__方法:獲得已知對象的類 ( 對象.class)。
5.__del__方法:對象在程序運行結束后進行對象銷毀的時候調用這個方法,來釋放資源。
三、理解self
self和對象指向同一個內存地址,可以認為self就是對象的引用。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 創建一個類 class Car( object ): # 創建一個方法打印 self 的id def getself( self ): print ( 'self=%s' % ( id ( self ))) bmw = Car() print ( id (bmw)) bmw.getself() '''輸出 140033867265696 140033867265696 ''' |
所謂的self,可以理解為對象自己,某個對象調用其方法時,python解釋器會把這個對象作為第一個參數傳遞給self,所以開發者只需要傳遞后面的參數即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 創建一個類 class Car( object ): def __init__( self ,name,colour): self .name = name self .colour = colour # 創建一個方法打印 self 的id def getself( self ): print ( 'self=%s' % ( id ( self ))) bmw = Car( '寶馬' , '黑色' ) # 實例化對象時,self不需要開發者傳參,python自動將對象傳遞給self print ( id (bmw)) bmw.getself() |
四、練習對戰
做兩個人物對戰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import random import time #定義類 class hero( object ): # 定義屬性 def __init__( self ,name,blood,dblood,ablood): self .name = name #名字 self .blood = blood #血量 self .dblood = dblood #這是減少的血量 self .ablood = ablood #定義方法 # 互捅 def tong( self ,enemy): enemy.blood - = self .dblood print ( '%s砍掉了%s%d的血量' % ( self .name,enemy.name, self .dblood)) def addblood( self ): self .blood + = self .ablood print ( '%s吃了一顆補血藥,加了%d血量' % ( self .name, self .ablood)) def __str__( self ): return '%s 還剩下 %s 血' % ( self .name, self .blood) xm = hero( '西門吹雪' , 100 ,random.randint( 10 , 20 ),random.randint( 10 , 20 )) ygc = hero( '葉孤城' , 100 ,random.randint( 10 , 20 ),random.randint( 10 , 20 )) x = [ 1 , 2 ] while xm.blood> = 0 or ygc.blood> = 0 : if xm.blood< = 0 : print ( '%s獲勝' % ygc.name) break pass elif ygc.blood< = 0 : print ( '%s獲勝' % xm.name) break if 10 < = xm.blood < = 20 : xm.addblood() pass elif 10 < = ygc.blood < = 20 : ygc.addblood() pass if random.choice(x) % 2 = = 0 : xm.tong(ygc) print (ygc) print (xm) else : ygc.tong(xm) print (ygc) print (xm) print ( '***' * 10 ) time.sleep( 1 ) pass |
到此這篇關于python面向對象基礎之常用魔術方法的文章就介紹到這了,更多相關python魔術方法內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_46654114/article/details/116426818