python类的继承super方法_04 Python的继承、方法重写、super()类、父类私密属性的调用...

本文详细介绍了Python中的类继承,包括如何使用`super()`方法扩展父类的方法,以及如何在子类中重写父类的方法。同时,讲解了如何在子类中调用父类的私有属性和方法,强调了在Python2.x和Python3.x中调用父类方法的不同方式。通过示例代码展示了`super().方法名`和`父类名.方法名(self)`的使用,并提醒开发者应避免混合使用这两种方式。
摘要由CSDN通过智能技术生成

继承

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

ubuntu下怎么给普通用户赋予sudo权限

ununtu系统安装过程中,系统会提示建立一个默认用户,比如用户名为:zhuhui.这个默认用户具有一定的管理功能,即可以通过sudo命令执行root权限的操作.由于Ubuntu系统默认不允许通过ro ...

What is a Windows USB device path and how is it formatted?

http://community.silabs.com/t5/Interface-Knowledge-Base/Windows-USB-Device-Path/ta-p/114059 Windows ...

php输出错误屏蔽的函数

/** * 设置默认值方法 * @param mult $data * @param string $key key值 * @param string $default 默认值 */ public s ...

Java lombok插件介绍

lombok是什么? lombok是一个插件,用途是给你类里面的字段,自动的加上属性,构造器,ToString方法,Equals方法等等 lombok怎么安装? 安装网上一搜一大把,这里有一个Idea ...

ntp 时间同步

NTP 是网络时间协议(Network Time Protocol)的简称,通过 udp 123 端口进行网络时钟同步 一.安装 # 既可做服务端也可做客户端 yum install -y ntp # ...

数据库学习---SQL基础(二)

数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) 上篇复习的sql的增删改查,and ,or ,>=, <=,!=等逻辑运算符,还有in ...

make and make bzImage

2.6内核 make = make bzImage + make modules 无非是改下Makefile而已 2.4 内核 01.make menuconfig 02.make dep 03.ma ...

ubuntu 16&period;04 屏幕截图

shift+prtsc   快捷键截取指定区域的图片 类似qq截图

5&period;同步关键字(synchronized)

同步关键字(synchronized): 多线程给我们提供方便的时候,也给整个编程增加了难度,尤其是对临界资源的控制,尤为重要. 一个在操作系统课上,老掉牙的事例,就把这种情况解释的明明白白. 一对夫 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值