通俗理解:類就是模板,物件就是通過模板創造出來的物體
類(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一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...