继承

A类继承B类,A即可获得B类的全部公共属性和方法(包括内置属性和方法)。格式如:class A(B):

class Animal:
def sleep(self):
print("zZZ...") def eat(self):
print("yamiyami...") def run(self):
print("huchihuchi...") class Dog(Animal): #Dog类拥有sleep,eat,run,bark四个方法
def bark(self):
print("汪汪汪")

 

方法重写

子类有时需要对继承自父类的方法进行修改或重写,这时直接定义一个与需要重写的方法名一样的方法即可,如(接上面的代码):

class xiaotianquan(Dog):
def fly(self):
print("我在飞")
#重写继承自父类的bark()方法
def bark(self):
print("我在叫!我在叫!")

  

父类方法扩展

有时仅需对父类方法进行扩展无需完全重写,只需在重写方法时加上super().父类方法 即可:

class xiaotianquan(Dog):
#扩展继承自父类的bark()方法
def bark(self):
#继承父类的方法
super().bark() #此时super()即代表父类(此时的父类为Dog)
#需要拓展的代码
print("我在叫!我在叫!")

  super类是一个特殊的类,super()代表着一个super类的实例

Python2.x版本调用父类方法(了解,不推荐)

在Python2.x版本中,子类重写或拓展父类方法时,不是使用super()调用,而是使用:父类名.父类方法(self) #注意,self不能省略

class xiaotianquan(Dog):
#扩展继承自父类的bark()方法
def bark(self):
#继承父类的方法
Dog.bark(self) #self不能省略
#需要拓展的代码
print("我在叫!我在叫!")

  注意:super().方法名 与 父类名.方法名(self),开发中不能混用,只能使用一种,且推荐super().方法名这种

父类的私有属性和方法的调用

子类无法直接访问父类的私有属性(可以但不推荐),但可以通过父类中的公共方法来调用私有属性和方法:

class A:
def __init__(self):
self.__age = 18 def __fuck(self):
print("你不能搞我") def get_age(self):
return self.__age def force(self):
self.__fuck() class B(A):
def __init__(self):
super().__init__() #非常重要!!没有这行代码就没有继承自父类的_A__age属性
name = "xiaoli" xiaoli = B()
print(xiaoli.get_age())
xiaoli.force()

  运行结果:

E:\python3\python3.exe F:/PycharmProjects/project3-class/xh_13_调用父类方法中的私有属性和方法.py
18
你不能搞我 Process finished with exit code 0

  

04 Python的继承、方法重写、super()类、父类私密属性的调用的更多相关文章

  1. 20面向对象三特征 之继承 方法重写 super

    继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息.通过extends关键词去指明类与类之间的关系,一个父类可 ...

  2. [修]python普通继承方式和super继承方式

    [转]python普通继承方式和super继承方式 原文出自:http://www.360doc.com/content/13/0306/15/9934052_269664772.shtml 原文的错 ...

  3. 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.

      继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.   https://www.evernote.com/shard/s227 ...

  4. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  5. Objective-c 类的继承 方法重写 方法重载

    一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序. Obje ...

  6. 【Python】python 普通继承方式和super继承方式

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递.举一个很常见的例子:>>&g ...

  7. python 普通继承方式和super继承方式

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递. 举一个很常见的例子: >> ...

  8. PHP学习笔记5-类的继承/方法重写

    更改Man.php文件名为People.php,加入代码: public function hi(){ return $this->_name.' say hi'; } 新建文件Man.php: ...

  9. Python 基础之面向对象之类中的方法和与类相关的魔术属性以及反射

    一.类中的方法 普通方法: 没有参数,只能类调用绑定方法: (1)绑定到对象(自动传递对象参数) (2)绑定到类(自动传递参数)静态方法: 无论是类还是对象,都能调用的方法#例:class Dog() ...

随机推荐

  1. iframe的src指向的内容不刷新

    想任何一种办法让iframe的src的值有变化就可以了 $("#h5Content").attr("src","${h5.url}"+&qu ...

  2. chrome离线安装包下载

    Google Chrome 已经是许多人的默认浏览器,但由于“你懂的”原因,在线安装基本没有成功过,他自己的自动更新也多数一直在加载中,所以我们会到一些下载站下载安装包,但我的多次经历告诉我,下载回来 ...

  3. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...

  4. SC3聚类 | 拉普拉斯矩阵 | Laplacian matrix | 图论 | R代码

    Laplacian和PCA貌似是同一种性质的方法,坐标系变换.只是拉普拉斯属于图论的范畴,术语更加专业了. 要看就把一篇文章看完整,再看其中有什么值得借鉴的,总结归纳理解后的东西才是属于你的. 问题: ...

  5. Vuejs函数式组件,你值得拥有(1)

    函数式组件在React社区很流行使用,那么在vue里面我们要怎么用呢 下面会涉及到的知识点: 高阶函数.状态.实例.vue组件 什么是函数式组件 我们可以把函数式组件想像成组件里的一个函数,入参是渲染 ...

  6. tansition-group 使用方法

    <transition-group name="breadcrumb"> <el-breadcrumb-item v-for="(item,index) ...

  7. Typescript中的类 Es5中的类和静态方法和继承(原型链继承、对象冒充继承、原型链+对象冒充组合继承)

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  8. Qt编写气体安全管理系统15-网络转发

    一.前言 在本系统中网络转发是个什么功能含义呢,其实就是将本地采集设备的所有数据打包发送到指定的网络地址,默认采用UDP的形式,无连接开销小,我也是看到很多的组态软件有这个功能,其实现有的很多的气体探 ...

  9. 一种计算hash的思路

    /*** * 转换请求hash,根据转换模式计算hash,防止重复发送请求,浪费服务器资源(内存.cpu.文件系统等) * @param mode * @param data * @return */ ...

  10. DBGrid 单击弹出PickList

    type   myGrid = class(TCustomGrid)   end; type   myInplaceEditList = class(TInplaceEditList)   end; ...