Python類和物件關係2

2021-09-14 06:52:10 字數 2911 閱讀 7899

示例如下:

1. ⼈類

屬性: 姓名

⾎量 持有的槍

⽅法:安⼦彈

安彈夾拿槍(持有搶) 開槍

2. ⼦彈類

屬性:

殺傷⼒

方法:

傷害敵⼈(讓敵⼈掉⾎)      

3. 彈夾類

屬性:

容量(⼦彈儲存的最⼤值)

當前儲存的⼦彈

⽅法:儲存⼦彈(安裝⼦彈的時候)

彈出⼦彈(開槍的時候)

4. 槍類

屬性:

彈夾(預設沒有彈夾,需要安裝)

⽅法:連線彈夾(儲存彈夾)

射⼦彈

# 人類

class ren:

def __init__(self,name):

self.name = name # 人的名字

self.xue = 100 # 血量

self.qiang = none # 人拿的槍枝名字

# 定義返回屬性值函式

def __str__(self):

return self.name+"剩餘血量"+str(self.xue)

# 安裝子彈

def anzidan(self,danjia,zidan):

danjia.baocunzidan(zidan)

# 安彈夾

def andanjia(self, qiang, danjia):

qiang.lianjiedanjia(danjia)

# 拿槍

def naqiang(self, qiang):

self.qiang = qiang

# 開槍

def kaiqiang(self, diren):

self.qiang.she(diren)

# 掉血

def diaoxue(self, shashangli):

self.xue -= shashangli

#彈夾類

class danjia:

def __init__(self, rongliang):

self.rongliang = rongliang

self.rongnalist =

def __str__(self):

return "彈夾當前的⼦彈數量為:" + str(len(self.rongnalist)) + "/"

def baocunzidan(self, zidan):

if len(self.rongnalist) < self.rongliang:

def chuzidan(self):

# 判斷當前彈夾中是否還有⼦彈

if len(self.rongnalist) > 0:

# 獲取最後壓⼊到單間中的⼦彈

zidan = self.rongnalist[-1]

self.rongnalist.pop()

return zidan

else:

return none

# 子彈

class zidan:

def __init__(self,shashangli):

self.shashangli = shashangli

def shanghai(self,diren):

diren.diaoxue(self.shashangli)

#槍類class qiang:

def __init__(self):

self.danjia = none

def __str__(self):

if self.danjia:

return "槍當前有彈夾"

else:

return "槍沒有彈夾"

def lianjiedanjia(self,danjia):

if not self.danjia:

self.danjia = danjia

def she(self,diren):

zidan = self.danjia.chuzidan()

if zidan:

zidan.shanghai(diren)

else:

print("沒有⼦彈了,放了空槍....")

#建立⼀個⼈物件

laowang = ren("⽼王")

#建立⼀個彈夾

danjia = danjia(20)

print(danjia)

#迴圈的⽅式建立⼀顆⼦彈,然後讓⽼王把這顆⼦彈壓⼊到彈夾中

i=0while i<5:

zidan = zidan(5)

laowang.anzidan(danjia,zidan)

i+=1

#測試⼀下,安裝完⼦彈後,彈夾中的資訊

print(danjia)

#建立⼀個槍物件

qiang = qiang()

print(qiang)

#讓⽼王,把彈夾連線到槍中

laowang.andanjia(qiang,danjia)

print(qiang)

#建立⼀個敵⼈

diren = ren("敵⼈")

print(diren)

#讓⽼王拿起槍

laowang.naqiang(qiang)

#⽼王開槍射敵⼈

laowang.kaiqiang(diren)

print(diren)

print(danjia)

laowang.kaiqiang(diren)

print(diren)

print(danjia)

python 類和物件(2)

python 的魔法方法 雙下劃線包圍的函式 init self,param1,param2 相當於建構函式 class ball def init self,name self.name name def kick self print 我叫 s,該死的,誰踢我.self.name b ball ...

python 類和物件關係及物件建立過程

python從設計之初就已經是一門物件導向的語言,正因為如此,在python中建立乙個類和物件是很容易的類 class 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。類由 類名 屬性 方法 構成 方法 類中定義的函式。類變數 類變數在整個例項化...

類和物件的關係

類是具有相同資料結構 屬性 和相同操作功能 行為 物件的集合。物件就是符合某種類所產生的乙個例項。物件與類的關係是 物件的共性抽象為類,類的例項化就是物件。類是乙個抽象的概念,而物件是具體的,比如說車是乙個類的話,張三的那輛賓士車就是車這個類的乙個例項,動物是乙個類的話,李四的家養的那只貓就是動物類...