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

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

python学习(三十)私有和继承的相关文章

python学习三十天(错误处理)

今日内容: 1.昨日作业 2.错误处理 一,昨日作业 题目:三级菜单使用递归和栈的方式写 递归方式 字典: university_list = { "安徽省": { "合肥": ["中国科技大学", "合肥工业大学"], "安庆": ["安庆学院"], "阜阳": ["阜阳学院"] }, "江苏省": { "南京&qu

python 学习三十五天(socket的更多方法)

1.黏包 2.socket的更多方法介绍 3.验证客户端连接合法性 4.socketserver模块 一.黏包 1.现象: res=subprocess.Popen(cmd.decode('utf-8'), shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 的结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdout.read()读出的就是GBK编码的,在接收端需要用GBK解码 且只能从管道里读一次结果

python学习三十四天函数高阶函数定义及用法

python函数高阶函数是把函数当成一个变量,传递给函数作为参数,或者函数的返回值里面有函数,都称为高阶函数, 1,把函数作为参数传递 def dac(x,y): return x+y def test(n): print(n) test(dac) 输出结果为 函数类型function 2,把函数做为返回值,也是高阶函数 def test(x,y): return abs,x,y 输出结果为 列表,包含 函数,参数 文章来自(www.96net.com.cn) 原文地址:https://www.

Python进阶(三十四)-Python3多线程解读

Python进阶(三十四)-Python3多线程解读 线程讲解 ??多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度. 程序的运行速度可能加快. 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. ??线程在执行过程中与进程还是有区别的.每个独立

(转载)深度学习三十年创新路

转载自:http://36kr.com/p/533832.html 编者注:深度学习火了,从任何意义上,大家谈论它的热衷程度,都超乎想象.但是,似乎很少有人提出不同的声音,说深度学习的火热,有可能是过度的繁荣,乃至不理性的盲从.而这次,有不同的想法出现了. 本篇文章来自依图科技 CEO Leo的投稿,依图科技是一家专注研究CV(Computer Vison,计算机视觉)的以技术驱动的创业公司,Leo自己也在这一领域有深入研究,因此这次写下这篇文章,希望回顾一下深度学习三十年的创新之路. 近期Na

深度学习三十年创新路

深度学习三十年创新路 编者注:深度学习火了,从任何意义上,大家谈论它的热衷程度,都超乎想象.但是,似乎很少有人提出不同的声音,说深度学习的火热,有可能是过度的繁荣,乃至不理性的盲从.而这次,有不同的想法出现了. 本篇文章来自依图科技 CEO Leo的投稿,依图科技是一家专注研究CV(Computer Vison,计算机视觉)的以技术驱动的创业公司,Leo自己也在这一领域有深入研究,因此这次写下这篇文章,希望回顾一下深度学习三十年的创新之路. 近期Nature杂志刊登了Lecun.Bengio.H

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

python学习笔记十——异常处理

1.try: command except 错误类型,记录错误信息变量: command finally: command try...finally的用处是无论是否发生异常都要确保资源释放代码的执行.一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程.如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理.如下从几个细节讨论finally的特性. 1).try中的return: 当在try语句块中含有return语句

Python进阶(三十五)-Fiddler命令行和HTTP断点调试

Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 ??上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都称为一个session).界面中能够看到Fiddler抓取的全部HTTP请求.而为了更加方便的管理全部的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作Linux的童鞋应该能够感受到这会有多么方便

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot