前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python中的继承

Python中的继承

原创
作者头像
我叫什么好
发布于 2022-01-07 08:40:18
发布于 2022-01-07 08:40:18
79900
代码可运行
举报
文章被收录于专栏:Python1.0Python1.0
运行总次数:0
代码可运行

继承:

面向对象程序语言的一个重要特点是继承。继承提供了在已存在类的基础上创建新类的方法。继承的子类 拥有被继承的父类的所有方法,在此基础上,子类还可以添加自己的专有方法。继承是类的强有力的特点。一些程序不用继承将会非常复杂,用了继承,写起来就会简单扼要,通俗易懂。另外,通过继承,还可以重新利用以前编写的代码,因为你可以对父类的方法进行定制,而并非一定要修改它们。有时,继承反映了问题的自然结构,这样使程序更容易理解。任何事情都有双重性。继承也有可能使程序变得难以阅读。调用一个方法时,有时很难判断它是在哪定义的。相关的代码可能分散在几个模块中。所以,有些事情利用继承的特点能够做好,不利用继承,也可能做的不错。如果问题的自然结构不倾向于用继承解决,那么就不要用,用了反而不好。

继承的定义:

已经定义了一个父类BaseClass,那么子类的定义方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class DerivedClass(BaseClass):

子类别的实例化方式没有特别之处。如果要引用子类的某个属性,首先在子类中寻找,没有就去到父类中寻找它的定义,在没有的话,就一直向上找下去,知道找到为止。

方法的寻找方式与属性相同。子类的方法可以重定义父类的方法,要是你觉得父类的方法不能满足要求的话。有时候,子类的方法中可以直接调用父类中的方法,方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BaseClass.method(self,arguments)

1.

定义一个父类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> class Person:
...     def __init__(self , name = None , age = 1 , sex = "men"):
...         self.name = name;
...         self.age = age;
...         self.sex = sex;
...         
...     def display(self):
...         print "name : %-20s" % self.name;
...         print "age : %-20d" % self.age;
...         print "sex : %-20s" % self.sex;

紧接着定义了Person的student类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> class Student(Person):
...     def __init__(self , name = None , age = 1 , sex = "men" , grade = 0):
...         Person.__init__(self , name , age , sex)
...         self.grade = grade;
...         
...     def display(self):
...         Person.display(self)
...         print "grade : %-20d" % self.grade;

私有方法:

在C++语言中有私有方法的概念,私有方法只能被类的内部方法调用。在Python 中,类的私有方法和私有属性,不能够从类的外面调用。类的方法和属性是公有,还是私有,可以从它的名字判断。如果名字是以两个下划线开始,但并不是以两个下划线结束,则是私有的。其余的都是公有的。请看下面的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import math
>>> class Point:
...     def __init__(self , x = 0 , y = 0):
...         self.x = x;
...         self.y = y;
...         
...     def __str__(self):
...         return '(' + str(self.x) + ',' + str(self.y) + ')';

class Line:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...     def __init__(self , p1 = Point() , p2 = Point()):
...         self.__p1 = p1;
...         self.__p2 = p2;
...         
...     def __str__(self):
...         return str(self.__p1) + str(self.__p2);
...         
...     def __distance(self):
...         tx = math.pow(self.__p1.x,2) + math.pow(self.__p2.x,2);
...         ty = math.pow(self.__p1.y,2) + math.pow(self.__p2.y,2);
...         return math.sqrt(tx+ty);
...         
...     def length(self):
...         print self.__distance();

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python中的继承
python3中使⽤的都是新式类. 如果基类谁都不继承. 那这个类会默认继承 object
星陨1357
2023/03/14
7960
Python中的继承
图解python | 面向对象编程
教程地址:http://www.showmeai.tech/tutorials/56
ShowMeAI
2022/02/23
6480
图解python | 面向对象编程
python学习笔记6.1-类的认识
前言 都在说,在Python中“无所不对象”,是因为Python是一个面向对象的动态编程语言,因而它具有:多态(Polymorphism),继承(Inheritance)和封装(Encapsulati
锦小年
2018/01/02
7230
python学习笔记6.1-类的认识
Python多继承与super使用详解
如果不同的父类中存在 同名的方法,子类对象在调用方法时,会调用哪一个父类中的方法呢?
用户7886150
2021/01/20
2.8K0
7.0 Python 面向对象编程
python是一种面向对象的编程语言,面向对象编程(Object-Oriented Programming,OOP)是一种编程思想,其核心概念是“对象”。对象是指一个具有特定属性和行为的实体,而面向对象编程就是通过对这些实体进行抽象、分类、封装和继承等操作,来实现程序的结构和逻辑。在python中,我们可以通过定义类、创建实例和调用方法等方式,来实现面向对象编程的思想,从而编写出更加灵活、可扩展、易维护的程序。
王 瑞
2023/08/14
3060
Python 面向对象编程详解
Python 支持面向过程、面向对象、函数式编程等多种编程范式,且不强制我们使用任何一种编程范式,我们可以使用过程式编程编写任何程序,在编写小程序时,基本上不会有问题.但对于中等和大型项目来说,面向对象将给我们带来很多优势.接下来将结合面向对象的基本概念和Python语法的特性讲解面向对象的编程.
王 瑞
2022/12/28
6320
Python基础入门_5面向对象基础
第五篇主要介绍 Python 的面向对象基础知识,也就是类的介绍,包括类方法和属性、构造方法、方法重写、继承等,最后给出两道简单的练习题。
kbsc13
2019/08/16
5150
Python学习(七)---- 面向对象学习(类)
原文地址: https://blog.csdn.net/fgf00/article/details/52449707 编辑:智能算法,欢迎关注!
智能算法
2018/08/17
4470
python中class的定义及使用_python中class的定义及使用
python的class(类)相当于一个多个函数组成的家族,如果在这个Myclass大家族里有一个人叫f,假如这个f具有print天气的作用,那么如果有一天我需要这个f来print一下今天的天气,那么我必须叫他的全名MyClass.f才可以让他给我print,即在调用他的时候需要带上他的家族名称+他的名称。
全栈程序员站长
2022/08/18
1.4K0
python中class的定义及使用_python中class的定义及使用
python 面向对象之继承实例讲解
        --- info of Student:ChenRonghua ---
py3study
2018/08/02
6770
Python从入门到入土-面向对象
实际上Student 和 Teacher 可以从 People 类继承,复用实现:
共饮一杯无
2022/11/28
4390
Python从入门到入土-面向对象
Python学习(七)面向对象 ——继承和多态
参考链接: Python中的面向对象编程OOP | 3(继承,对象示例,issubclass和super)
用户7886150
2020/12/20
3210
10 . Python之面向对象
类中的方法一般都是通过对象执行的(除去类方法,静态方法外),并且对象执行这些方法都会自动将对象空间传给方法中的第一个参数self
iginkgo18
2020/09/27
4250
10 . Python之面向对象
Python入门之面向对象
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类似对象的抽象。
孙小北
2024/01/30
1320
Python面向对象总结及类与正则表达式
和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。
py3study
2020/01/16
4930
Python面向对象总结及类与正则表达式
Python升级之路( Lv6 ) 面向对象基础
第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础
时间静止不是简史
2022/06/12
5740
Python升级之路( Lv6 ) 面向对象基础
Python面对对象编程
面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复填写,仅调用函数即可 面对对象:对函数进行分类和封装,让开发"更好更快更强"。
潇洒坤
2018/09/10
6850
Python面对对象编程
Python 类与继承
self参数用于对当前类中实例的引用,必须作为该类中任何函数的第一个参数,但可以不必命名为 self
回天
2023/04/25
8020
Python 类与继承
对Python继承和多态的理解
在生活中,大家都应该听过这个词,比如儿子继承他老子的财产,那么在python中也有继承,但是有不少人比较难理解继承这个东西。 在python,所有的类都默认继承object类,因此object类也被称为基类,其他的类称为派生类,在python中继承就是 子类可以继承父类中的所有的非私有方法
A_snail
2023/05/09
2940
python3_07.面向对象
面向对象程序设计的基本步骤: 1、根据功能、抽象业务对象。 2、构建独立的业务模块,利用封装、继承、多态等抽象业务需求。 3、编写程序。 4、以对象为单位输入参数、开展测试。 global关键字用来在函数或其他局部作用域中使用全局变量。 >>> a = 10 >>> def foo(): ...     a = 100 ...  >>> a 10 >>> foo() >>> a 10 >>> def glo(): ...     global a ...     a = 100 ...  >>> 
py3study
2020/01/06
3510
相关推荐
Python中的继承
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验