Python中类的继承代码实例


Posted in Python onOctober 28, 2014

相对于C++的继承编写,Python更简洁,而且效率也是很高的,下面编写一个简单Python的继承例子。

#!/usr/bin/python   

#filename: pyclass.py   

  

class Member:   

        def __init__(self, name, age):   

                self.name = name   

                self.age = age   

                print 'Member init:%s' % self.name   

        def tell(self):   

                print 'Name:%s,Age:%d' % (self.name, self.age),   

  

class Student(Member):   

        def __init__(self, name, age, marks):   

                Member.__init__(self, name, age)   

                self.marks = marks   

                print 'Student init:%s' % self.name   

        def tell(self):   

                Member.tell(self)   

                print 'Marks:%d' % self.marks   

  

class Teacher(Member):   

        def __init__(self, name, age, salary):   

                Member.__init__(self, name, age)   

                self.salary = salary   

                print 'Teacher init:%s' % self.name   

        def tell(self):   

                Member.tell(self)   

                print 'Salary:%d' % self.salary   

  

s = Student('Tom', 20, 80)   

t = Teacher('Mrs.Huang', 30, 50000)   

  

members = [s, t]   

for mem in members:   

        mem.tell() 

运行效果:

[root@localhost hhl]# python pyclass.py    

Member init:Tom   

Student init:Tom   

Member init:Mrs.Huang   

Teacher init:Mrs.Huang   

Name:Tom,Age:20 Marks:80   

Name:Mrs.Huang,Age:30 Salary:50000 

我们同样编写同样效果的C++例子:

//filename: class.cpp   

#include <string.h>   

#include <iostream>   

using namespace std;   

  

class Member   

{   

public:   

    Member(char *n, int a);   

    void tell();   

private:   

    char name[10];   

    int age;   

};   

  

Member::Member(char *n, int a)   

{   

    memcpy(name, n, sizeof(name));   

    age = a;   

    cout<<"Member init:"<<name<<endl;   

}   

  

void Member::tell()   

{   

    cout<<"Name:"<<name<<","<<"Age:"<<age<<",";   

}   

  

class Student:public Member   

{   

public:   

    Student(char *n, int a, int m);   

    void tell_s();   

private:   

    int marks;   

};   

  

Student::Student(char *n, int a, int m):Member(n, a)   

{   

    marks = m;   

    cout<<"Student init:"<<n<<endl;   

}   

  

void Student::tell_s()   

{   

    Member::tell();   

    cout<<"Marks:"<<marks<<endl;   

}   

  

class Teacher:public Member   

{   

public:   

    Teacher(char *n, int a, int s);   

    void tell_t();   

private:   

    int salary;   

};   

  

Teacher::Teacher(char *n, int a, int s):Member(n, a)   

{   

    salary = s;   

    cout<<"Teacher init:"<<n<<endl;   

}   

  

void Teacher::tell_t()   

{   

    Member::tell();   

    cout<<"Salary:"<<salary<<endl;   

}   

  

int main(void)   

{   

    Student s("Tom", 20, 80);   

    Teacher t("Mrs.Huang", 30, 50000);   

       

    s.tell_s();   

    t.tell_t();   

  

    return 0;   

} 

运行效果:

[root@localhost hhl]# ./class    

Member init:Tom   

Student init:Tom   

Member init:Mrs.Huang   

Teacher init:Mrs.Huang   

Name:Tom,Age:20,Marks:80   

Name:Mrs.Huang,Age:30,Salary:50000 

这两者的运行效果是一样的,但是python更简洁些。。。

Python 相关文章推荐
python实现将内容分行输出
Nov 05 Python
Django实现组合搜索的方法示例
Jan 23 Python
python实现傅里叶级数展开的实现
Jul 21 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
python实现公司年会抽奖程序
Jan 22 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
python super用法及原理详解
Jan 20 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
Python列表list数组array用法实例解析
Oct 28 #Python
python实现无证书加密解密实例
Oct 27 #Python
深入理解Python 代码优化详解
Oct 27 #Python
简单的Python抓taobao图片爬虫
Oct 26 #Python
Python性能优化的20条建议
Oct 25 #Python
跟老齐学Python之网站的结构
Oct 24 #Python
跟老齐学Python之折腾一下目录
Oct 24 #Python
You might like
与数据库连接
2006/10/09 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP goto语句用法实例
2019/08/06 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
python列表使用实现名字管理系统
2019/01/30 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
运动会广播稿150字(9篇)
2014/09/20 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
考试没考好检讨书
2015/05/06 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android