码迷,mamicode.com
首页 > 编程语言 > 详细

python学习(三十)私有和继承

时间:2018-05-28 00:54:17      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:password   完全   xxx   现在   pre   函数   size   新功能   import   

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这个类里的方法。

 

python学习(三十)私有和继承

标签:password   完全   xxx   现在   pre   函数   size   新功能   import   

原文地址:https://www.cnblogs.com/emilyliu/p/9098123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!