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 socket 超时设置 errno 10054
Jul 01 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python socket实现简单聊天室
Apr 01 Python
Numpy数组的保存与读取方法
Apr 04 Python
基于python指定包的安装路径方法
Oct 27 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
Python实现分段线性插值
Dec 17 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 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
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
浅析Python迭代器的高级用法
2020/07/16 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
求职者简历中的自我评价
2013/10/20 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
高校教师岗位职责
2014/03/18 职场文书
教师产假请假条
2014/04/10 职场文书
初中学校对照检查材料
2014/08/19 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
食堂卫生管理制度
2015/08/04 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang