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编写基于DHT协议的BT资源爬虫
Mar 19 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
Python语言快速上手学习方法
Dec 14 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
基于pycharm实现批量修改变量名
Jun 02 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
MySQL授权问题总结
2007/05/06 PHP
提高php编程效率技巧
2015/08/13 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
canvas绘制七巧板
2017/02/03 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
JavaScript链式调用实例浅析
2018/12/19 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
Python中的 Set 与 dict
2022/03/13 Python
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL