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 encode和decode的妙用
Sep 02 Python
Python常见数据结构详解
Jul 24 Python
跟老齐学Python之使用Python操作数据库(1)
Nov 25 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
python提取具有某种特定字符串的行数据方法
Dec 11 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
python中树与树的表示知识点总结
Sep 14 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
python 使用pandas读取csv文件的方法
Dec 24 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简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
5 cool javascript apps
2007/03/24 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
Python回调函数用法实例详解
2015/07/02 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
教师自荐信
2013/12/10 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
夫妻分居协议书范本
2014/11/28 职场文书