面向对象的另一个特性是继承,继承可以更好的代码重用。

例如一个学校里面的成员有老师、学生。老师和学生都有共同的属性名字和年纪。但老师还有它自己的属性,如工资。学生也有它的属性,如成绩。

因此我们可以设计一个父类:SchoolPeople,两个子类:Teacher、Student。

代码如下:

SchoolPeople父类:

class SchoolPeople():
def __init__(self,name,age):
print "Init ShoolPeople"
self.name=name
self.age=age
def tell(self):
print "name is %s,age is %s" %(self.name,self.age)

Teacher子类:重写了父类的tell方法。

class Teacher(SchoolPeople):
def __init__(self,name,age,salary):
SchoolPeople.__init__(self,name,age)
self.salary=salary
print "Init teacher"
def tell(self):
print "salary is %d" %self.salary
SchoolPeople.tell(self)

 Student子类:没有重写父类的方法

class Student(SchoolPeople):
pass

调用:

t=Teacher("t1",35,10000)
t.tell()
print "\n"
s=Student("s1",10,95)
s.tell()

结果:

Init ShoolPeople
Init teacher
salary is 10000
name is t1,age is 35

Init ShoolPeople
name is s1,age is 10

结果分析:虽然子类Student子类没有具体的实现代码,默认会调用父类的初始化函数和tell方法。

子类Teacher重写了父类的tell方法,所以,他的实例会运行Techer类的tell方法。

  

 

 

(Python)继承的更多相关文章

  1. python 继承中的super

    python继承中子类访问父类的方法(包括__init__)主要有两种方法,一种是调用父类的未绑定方法,另一种是使用super(仅仅对于新式类),看下面的两个例子: #coding:utf-8 cla ...

  2. python继承

    Python继承 继承实例: 父类和子类的关系: 继承树: 没有父类就继承object类,不要忘记调用super().__init__来初始化父类 代码: class Person(object): ...

  3. python继承——封装

    python继承--封装 1 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度 2 封装分为两个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空 ...

  4. python 继承与多重继承

    当然,如果不支持python继承,语言特性就不值得称为“类”.派生类定义的语法如下所示: <statement-1> . . . <statement-N> 名称 BaseCl ...

  5. python 继承和多态

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...

  6. python继承的实例

    class SchoolMember(object):#定义学校 member=0#默认成员为0个 amount=0#默认学费为0元 def __init__(self,name,age,sex):# ...

  7. python 继承基础

    class annamal: def chi(self): print(self.name + '吃') def he(self): print(self.name + '喝') class dog( ...

  8. Python继承扩展内置类

    继承最有趣的应用是给内置类添加功能,在之前的Contact类中,我们将联系人添加到所有联系人的列表里,如果想通过名字来搜索,那么就可以在Contact类添加一个方法用于搜索,但是这种方法实际上属于列表 ...

  9. Python继承、方法重写

    继承 在编写类时,并不是每次都要从空白开始.当要编写的类和另一个已经存在的类之间存在一定的继承关系时,就可以通过继承来达到代码重用的目的,提高开发效率. class one(): "&quo ...

  10. python继承和多态

    继承 目标 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用,相同的代码不需要重复的编写 多态 不同的对象调用相同的方法,产生不 ...

随机推荐

  1. prolog 内部谓词

    内部谓词 和其他语言一样,prolog也提供一些基本的输入输出函数. 内部谓词是指已经在prolog中事先定义好的谓词,在内存中的动态数据库中是没有内部谓词子句的.(当我们运行某个.pl 文件的时候, ...

  2. 自动化测试第一季-selenium + python(环境搭建与基础代码解释)

    # coding = utf-8              %%%%%%%%%%%%%%%%防止乱码(可加可不加) from selenium import webdriver             ...

  3. RabbitMQ on windows开启远程访问

    我的RabbitMQ安装位置是:C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.6 为rabbitmq添加用户 C:\Progra ...

  4. 删除win7远程桌面历史记录

    开始-运行-“regedit”注册表中找到HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default 删除不需要的即可

  5. java中时间比较

    package com.newtouch.test; import java.text.SimpleDateFormat;import java.util.Date; public class Tim ...

  6. hihoCoder #1199 : Tower Defense Game ——(树型dp)

    题目链接:https://hihocoder.com/problemset/problem/1199. 题意:一棵以1为根的树,每个点有一个p值和q值,到这个点需要当前分数大于等于p,然后消耗掉(p- ...

  7. JSONObejct属性获取

    package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import org.apache.co ...

  8. PPTP-VPN第一章——部署与简单使用

    最近前游戏同事搞了台的VPS,贡献出来做VPN使用.目前流行的服务器VPN软件主要有PPTP VPN和Openvpn.Openvpn虽然功能较为强大,且安全性高,支持nat穿越等等,但服务器端和客户端 ...

  9. WPF 将控件绑定到变量

    看了好多博客,发现很多都不能用,嘿嘿,自己终于实现了: 废话不多说,上代码: XAML代码如下: <Window x:Class="WpfApplication7.MainWindow ...

  10. javaScript 查询字符串参数 获取

    function getQueryStringArgs() { //取得查询字符串并去掉开头的问号 var qs = (location.search.length > 0 ? location ...