继承:

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

继承的定义:

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

class DerivedClass(BaseClass):
......

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

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

BaseClass.method(self,arguments)

定义一个父类:

>>> 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类
>>> 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 中,类的私有方法和私有属性,不能够从类的外面调用。类的方法和属性是公有,还是私有,可以从它的名字判断。如果名字是以两个下划线开始,但并不是以两个下划线结束,则是私有的。其余的都是公有的。请看下面的例子:

>>> 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:
... 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();
...
...
...
>>>

Python中的继承的更多相关文章

  1. Python 中的继承、多态和封装

    涉及问题: Python 中如何实现多继承,会有什么问题? Python 中的多态与静态方法有什么区别? 答案要点如下: Python 中的继承,就是在定义类时,在括号中声明父类,简单示例如下: cl ...

  2. python中的继承原则

     继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法.继承实现了代码的重用.重用已经存在的数据和行为,减少代码的重新编写,python在类名 ...

  3. python中的继承和多态

    继承 继承的表现方式: class Animal(): pass class Cat(Animal): #animal是cat的父类,也可以说是基类 pass print(Cat.__bases__) ...

  4. python中多继承C3算法研究

    在python的面向对象继承问题中,单继承简单易懂,全部接受传承类的属性,并可添加自带属性, 但是,在多继承情况下,会遇到多个被继承者的顺序问题,以及多次继承后查找前几次继承者需求属性时,可能不易发现 ...

  5. python中 的继承

    1.Python的类可以继承多个类,Java和C#中则只能继承一个类. 2.Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先. 当类是经典类时,多继承情况下,会 ...

  6. 理解Python中的继承规则和继承顺序

    先来看一段代码: class First(object): def __init__(self): print ("first") class Second(object): de ...

  7. 解释一下python中的继承

    当一个类继承另一个类,它就被称为一个子类/派生类,继承父类/基类/超类.它会继承/获取所有类成员(属性和方法) 继承能让我们重新使用代码,也能更容易的创建和维护应用 单继承:一个类继承单个基类 多继承 ...

  8. python中定义函数和参数的传递问题

    作者:達聞西链接:https://zhuanlan.zhihu.com/p/24162430来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5.2.4 函数.生成器和类 ...

  9. Python中的类(中)

    上一篇介绍了Python中类相关的一些基本点,本文看看Python中类的继承和__slots__属性. 继承 在Python中,同时支持单继承与多继承,一般语法如下: class SubClassNa ...

随机推荐

  1. ubuntu卸载vmware

    下面方法摘抄网上方法,经过证实好使 lsmod——显示已载入系统的模块 ps aux : 显示其他用户启动的进程(a)   查看系统中属于自己的进程(x)         启动这个进程的用户和它启动的 ...

  2. AWVS介绍(转)

    使用AWVS对域名进行全局分析,深入探索: 首先,介绍一下AWVS这个工具. Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网 ...

  3. 基于visual Studio2013解决算法导论之018栈实现(基于链表)

     题目 用链表实现栈 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #in ...

  4. C# 多媒体播放器

    //停止播放 public void stopFile() { axWindowsMediaPlayer1.Ctlcontrols.stop(); } //暂停文件 public void pause ...

  5. C#动态增加边框

    if (this.Width >= 600) { timer1.Enabled = false; } else { this.Width += 30; }

  6. tomcat启动后ids页面无法访问

    修改servers-->tomcat6.0-->server.xml <Context docBase="/tds7030-web" path="&qu ...

  7. django局域网建一个网站

    之前总是运行的python manage.py runserver,用默认的在本机访问的127.0.0.1:8000,如果跟几个同学一起去开发一个网站来玩玩的话,可以这样: python manage ...

  8. 支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!

    支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者! 锋锐支付平台程序(www.100freenet.com)隶属于盐城市沐良商贸有限公司(沈阳杰速网络科技有限公司旗下 ...

  9. 使用ExifInterface获取图片信息

    package com.example.readimage; import java.io.IOException; import android.media.ExifInterface; impor ...

  10. service入门—电话监听器

    1.继承Service类 2.在清单文件进行配置(因为Service属于四大组件之一) <service android:name=".PhoneStatusService" ...