物件導向最重要的概念就是類(class)和例項(instance),必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的「物件」,每個物件都擁有相同的方法,但各自的資料可能不同。
物件導向三個概念:
1.封裝
即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進行操作,對不可信的進行隱藏
class cat(animal):
def bite(self):
print("貓咪咬")
lanmao = cat()
2.繼承
乙個類可以繼承其他乙個類的屬性和方法,比如我們定義乙個動物類和貓咪類,貓咪繼承動物,這樣例項化乙個貓咪物件時,貓咪也繼承了動物類的跑方法
如果需要繼承
class animal:
def run(self):
print("跑得快")
class cat(animal):
def bite(self):
print("貓咪咬")
lanmao = cat()
lanmao.run()
>>跑得快
使用繼承時,通常會用到super()方法,在python2中,通常需要在super()中加上object,python3不需要新增,可以使用super()提高**的可復用性、可維護性
以下函式,cat類繼承animal中的初始化中的方法
class animal:
def __init__(self,life):
self.life = life
print(self.life)
class cat(animal):
def __init__(self,life):
super().__init__(life)
self.life = life
a = animal(223)
mimi = cat(45)
>>223
3.多型
看如下**,當子類和父類都存在相同的run()方法時,我們說,子類的run()覆蓋了父類的run(),在**執行的時候,總是會呼叫子類的run()。這樣,我們就獲得了繼承的另乙個好處:多型。在子類呼叫run方法時,無論子類怎樣呼叫,都不會影響到其他子類繼承父類的方法去呼叫使用
class animal:
def run(self):
print("跑得快")
class cat(animal):
def bite(self):
print("貓咪咬")
def run(self):
print("貓咪在跑")
class dog(animal):
def laugh(self):
print("小狗在笑")
lanmao = cat()
wangcai = dog()
lanmao.run()
wangcai.run()
>>貓咪在跑
跑得快在業務編寫時,需要發掘重要的業務領域概念,建立業務領域概念之間的關係,找名詞,加屬性,連關係
其中物件之間的還有各種依存關係,限於篇幅和筆者個人能力不一一贅述
class role(object):
def __init__(self,name,role,weapon,attack,life_value = 100,money = 10000):
self.name = name
self.role =role
self.weapon = weapon
self.life_value = life_value
self.money = money
self.attack = attack
def shot(self,other):
print('%s 在射擊' %self.name)
print('%s跟%s在中路拼槍' %(self.name,other.name))
self.life_value = int(self.life_value)-int(other.attack)
if self.life_value > 0:
print('%s活下來了,還剩下%s血'%(self.name,self.life_value))
else:
print('%s掛了,充點錢吧,充錢才能更強'%self.name)
def get_shot(self,attract):
# self.life_value -= int(attract)
print('%s 被射中了,還剩下%s 血' %(self.name,self.life_value))
def arm(self,gun):
self.attack =int(self.attack)+int(gun.attack)
self.weapon = gun.name
self.money =int(self.money)-int(gun.money)
print('%s %s 裝備了%s,攻擊力提公升啦,竟然達到了驚人的%s 點' %(self.role,self.name,
self.weapon,self.attack))
print('%s 買了%s,還剩下 %s元錢' %(self.name,gun.name,self.money))
class gun(object):
def __init__(self,name,attack,money):
self.name=name
self.attack = attack
self.money = money
ak47 = gun('ak47','89','3000')
an94 = gun('an94','90','5000')
lsj = role('lsj','police','knief',10)
wyz = role('wyz','bandit','knief',10)
lsj.arm(ak47)
wyz.arm(an94)
lsj.shot(wyz)
wyz.shot(lsj)
python學習 物件導向
繼承 從已經有的類建立新類的過程,提供繼承資訊的叫父類 超類 基類 得到繼承資訊的叫子類 派生類 繼承是實現 復用的方式,繼承關係是一種is a關係。a student is a person.a teacher is a person.class person 定義人類 屬性name 名字 屬性n...
python物件導向學習
1.物件 物件是資料和功能 函式 的集合體 2.類 類是具有共同屬性 資料 函式 的物件的總稱 注 先定義類後例項化物件 3.屬性訪問 可以通過 dict 訪問屬性的值 4.屬性查詢和方法繫結 物件的命名空間裡只存放著物件獨有的屬性,而物件們相似的屬性是存放於類中的。物件在訪問屬性時,會優先從物件本...
python學習 物件導向程式設計
物件導向程式設計 object oriented programming,簡稱oop,是一種程式設計思想。oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把...