真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python的類和繼承

一、類的封裝:

  • 封裝將類的信息隱藏在類內(nèi)部,不允許外部直接修改該類的變量,只能通過該類提供的方法來實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問
class Boss():
    # 類的公共屬性
    level=1
    
    # 類的初始化(構(gòu)造方法),在類實(shí)例化時(shí)自動(dòng)調(diào)用。
    def __init__(self,name,hp,sp,atk):
        self.name = name
        self.hp = hp
        self.sp = sp
        self.atk = atk
    
    # 創(chuàng)建類的方法,Boss被擊中時(shí)HP減少
    def boss_hp_reduce(self,hero_atk):
        # 被擊中時(shí)HP減少
        self.hp -= hero_atk
        print("Boss受到了%d點(diǎn)傷害" % hero_atk)
        print("Boss現(xiàn)在的生命為%d" % self.hp)

    # 攻擊到hero時(shí),heroHP減少
    def boss_attack(self,hero_hp):
        hero_hp -= self.atk
        print("Hero受到了%d點(diǎn)傷害" % self.atk)
        print("Hero現(xiàn)在的血量為%d" % hero_hp)

    # 當(dāng)Boss魔力值充滿時(shí),釋放大招
    def boss_sp_full(self):
        print("Boss:哈哈,我放大招了")
        print("Hero被擊飛!受到了傷害")
        print("Hero陣亡了")

 # 設(shè)定hero的屬性,同樣可以使用類封裝,但是我懶得弄了  
hero_atk = 100
hero_hp = 1000

 # 創(chuàng)建一個(gè)實(shí)例
boss = Boss("icedemon",,5,350)

 # 調(diào)用實(shí)例的方法
boss.boss_hp_reduce(hero_atk)
boss.boss_attack(hero_hp)
boss.boss_sp_full()

輸出結(jié)果如下:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了新北免費(fèi)建站歡迎大家使用!

>>> Boss受到了100點(diǎn)傷害
>>> Boss現(xiàn)在的生命為9900
>>> Hero受到了350點(diǎn)傷害
>>> Hero現(xiàn)在的血量為650
>>> Boss:哈哈,我放大招了
>>> Hero被擊飛!受到了傷害
>>> Hero陣亡了 

二、類的繼承:

  • 從父類繼承,繼承可以讓子類從父類獲取特征(屬性和方法)
  • 在面向?qū)ο蟮氖澜缰?,從父類繼承,就可以直接擁有父類的屬性和方法,這樣可以減少代碼,多復(fù)用,子類可以定義自己的屬性和方法
class Enemy():
    def __init__(self,name,hp,atk):
        self.name = name
        self.hp = hp
        self.atk = atk

    def attack(self):
        print("%s發(fā)起攻擊,hero受到了%d點(diǎn)傷害!" % (self.name,self.atk))

 # 繼承Enemy類
class Enemy2(Enemy):
	pass
 
 # 創(chuàng)建實(shí)例
enemy = Enemy("毛毛蟲",10,2)
enemy1 = Enemy2("小雞",100,10)
enemy.attack()
enemy1.attack()
父類:Enemy就是Enemy2的父類,也成為基類,超類
子類:Enemy2就是Enemy的子類,也成為派生類
如果未定義時(shí),等同于繼承object,在Python中,object是所有類的父類

運(yùn)行結(jié)果

>>> 毛毛蟲發(fā)起攻擊,hero受到了2點(diǎn)傷害!
>>> 小雞發(fā)起攻擊,hero受到了10點(diǎn)傷害!

三、類的繼承之Super()函數(shù)

  1. 如果子類繼承父類不做初始化,那么會(huì)自動(dòng)繼承父類屬性。

  2. 如果子類繼承父類做了初始化,且不調(diào)用super初始化父類構(gòu)造函數(shù),那么子類不會(huì)自動(dòng)繼承父類的屬性。

  3. 如果子類繼承父類做了初始化,且調(diào)用了super初始化了父類的構(gòu)造函數(shù),那么子類也會(huì)繼承父類的屬性。
class Enemy():
    def __init__(self):
        self.name = "蜜蜂"
        self.level = 1
    def summary(self):
        print("%s,等級(jí)為%d" % (self.name,self.level))

# 一般來說子類做了初始化就不能繼承父類的屬性,但可以利用super函數(shù)
class Enemy2(Enemy):
    def __init__(self):
        self.name = "蜘蛛"
        self.level = 5
        super().__init__()

# 已經(jīng)初始化的子類不再繼承父類的屬性,已經(jīng)存在的方法也是        
class Enemy3(Enemy):
    def __init__(self):
        self.name = "蝴蝶"
        self.level = 2
    def summary(self):
        print("%s,等級(jí)為%d" % (self.name,self.level))

enemy = Enemy()
enemy2 = Enemy2()
enemy3 = Enemy3()

enemy.summary()
enemy2.summary()
enemy3.summary()

輸出結(jié)果:

>>> 蜜蜂,等級(jí)為1
>>> 蜜蜂,等級(jí)為1
>>> 蝴蝶,等級(jí)為2

分享名稱:Python的類和繼承
當(dāng)前地址:http://weahome.cn/article/dsoghjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部