1、私有
私有方法和私有变量,出了类就不能用
格式就是在变量或者方法前加两个下划线
import redis class 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这个类里的方法。
原文地址:https://www.cnblogs.com/emilyliu/p/9098123.html
时间: 2024-11-06 23:40:24