標籤: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學習(三十)私人和繼承