python學習(三十)私人和繼承

來源:互聯網
上載者:User

標籤:password   完全   xxx   現在   pre   函數   size   新功能   import   

1、私人

私人方法和私人變數,出了類就不能用

格式就是在變數或者方法前加兩個底線

import redisclass My(object):    def __init__(self):        self.__host=‘xxx‘   #私人變數,出了類就不能用了        self.___port=6379        self.__password=‘HK139bc&*‘        self.r=redis.Redis(host=self.host,port=self.port,password=self.password)        def __close(self):  #私人方法        print(‘close‘)

執行個體化後,調用私人變數和私人方法,執行會報錯

my=My()print(my.__host)  #私人變數,出了類就不能用my.close() #私人方法,出了類就不能用

只有在類的內部可以調用私人變數和私人函數

2、繼承&重寫父類&多繼承1)繼承與重寫父類(完全重寫父類)
class Lj(object):    def __init__(self):        self.money =10000000        self.house=‘大房子‘    def sing(self):        print(‘唱歌‘)    def dance(self):        print(‘跳舞‘)    def lm(self):        print(‘找朋友‘)class Lxj(Lj): #繼承Lj這個類    def dance(self):        print(‘霹靂舞‘)

執行個體化類Lxj

lj=Lxj()lj.sing()lj.dance()  #重寫了父類的方法,就按照重寫的來

輸出結果為:

唱歌霹靂舞

dance()這個方法,父類有,LXj繼承了父類,但又重寫了父類的這個方法,所以最後調用的就是自己的dance()方法,而不是父類的

2)增加父類方法功能

父類已經有這個方法,但不夠完善,在原本的方法裡添加新功能

class Zll():    def smile(self):        print(‘hhhh‘)class Xz(Zll): #多繼承    def smile(self):   #重寫父類方法        Zll().smile()  #調用父類的方法        print(‘呵呵呵‘)xz=Xz()xz.smile()

重寫父類的方法smile(),但不是不要父類該方法的功能,所以先調用父類方法,再增加自己的方法,輸出結果為:

hhhh呵呵呵

調用父類還可以用super()方法

class Zll():    def smile(self):        print(‘hhhh‘)class Xz(Zll): #多繼承    def smile(self):   #重寫父類方法        super(Xz,self).smile()  #自動幫找到父類,調用父類方法        print(‘呵呵呵‘)xz=Xz()xz.smile()

輸出結果也是一樣的

3)多繼承

一個類可以繼承多個類,可以調用多個類的方法

class Zll():    def smile(self):        print(‘hhhh‘)class Ds():    def smile(self):        print(‘安安安安‘)class Xz(Zll): #多繼承    def smile(self):   #重寫父類方法        Zll().smile()  #調用父類的方法        Ds().smile()  #調用哪個父類方法,使用哪個父類的方法        print(‘呵呵呵‘)xz=Xz()xz.smile()

多繼承重寫父類的時候,如果使用super()方法,會按照順序,一次找每個父類,如果找到該方法,就不會往後找了

class Zll():    def smile(self):        print(‘hhhh‘)class Ds():    def smile(self):        print(‘安安安安‘)class Xz(Zll): #多繼承    def smile(self):   #重寫父類方法        super(Xz,self).smile()  多繼承的時候,按順序找父類裡這個方法,找到後,就不往後找了        print(‘呵呵呵‘)xz=Xz()xz.smile()

因為繼承的兩個類都要smile()方法,現在重寫父類這個方法,就按照順序先去Zll這個類連找smile()方法,找到了,那就調用這個方法,不會再去Ds這個類裡的方法。

 

python學習(三十)私人和繼承

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.