python物件導向基礎之常用魔術方法

2022-10-03 16:30:13 字數 2536 閱讀 9668

通俗理解:類就是模板,物件就是通過模板創造出來的物體

類(class)由3個部分構成:

類的名稱: 類名

類的屬性: 一組資料

類的方法: 允許對進行操作的方法 (行為)

在python中,有一些內建好的特定的方法,方法名是「__***__」,在進行特定的操作時會自動被呼叫,這些方法稱之為魔法方法。下面介紹幾種常見的魔法方法。

1.__init__方法:初始化乙個類,在建立例項物件為其賦值時使用。

2.__str__方法:在將物件轉換成字串str(物件) 測試的時候,列印物件的資訊。

3.__new__方法:建立並返回乙個例項物件,呼叫了一次,就會得到乙個物件。

4.__class__方法:獲得已知物件的類 ( 物件.class)。

5.__del__方法:物件在程式執行結束後進行物件銷www.cppcns.com毀的時候呼叫這個方法,來釋放資源。

self和物件指向同乙個記憶體位址,可以認為self就是物件的引用。

# 建立乙個類

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,所以開發者只需要傳遞後面的引數即可。

# 建立乙個類

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('寶馬','黑色')

# 例項化物件時,s程式設計客棧elf不需要開發者傳參,python自動將物件傳遞給self

print(id(bmw))

bmw.getself()

做兩個人物對戰

import random

import time

#定義類

class hero(object):

# 定義屬fmvcrjjtvk性

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

ifwww.cppcns.com 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中用雙下劃線,開頭的方式將屬性隱藏起來 設定成私有的 但其實這只是一種變形操作,而且僅僅在類定義階段會發生變形 類中所有雙下劃線開頭的如 x都會在類定義的時候自動形成 類名 x的形式。class a n 0 類的屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如 n 會變...

python物件導向基礎 python物件導向基礎

面向過程與物件導向 面向過程的程式設計的核心是過程 流水線式思維 過程即解決問題的步驟,面向過程的設計就好比精心設計好的一條流水線,考慮周全什麼時候處理什麼東西。優點 極大降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點 一套流水線或者流程就是解決乙個問題,牽一髮而動全身。應用場景 一...

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...