Python中类的继承代码实例

这篇文章主要介绍了Python中类的继承代码实例,本文直接给出代码及运行效果,需要的朋友可以参考下

相对于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
   

#include
   

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中类的继承代码实例的更多相关文章

  1. python中类的继承

    python中类的继承 在python中面向对象编程中实现继承,以下面一个实例进行说明. class SchoolMenber(): # __init__类似于c++中的构造函数 # __init__ ...

  2. 第7.6节 Python中类的继承机制详述

    在本章第一节,介绍了面向对象程序设计的三个特征:封装.继承和多态,前面章节重点介绍了封装和多态,由于Python语言是多态语言,对象的类型不再由继承等方式决定,而由实际运行时所表现出的具体行为来决定, ...

  3. Python configparser模块操作代码实例

    1.生成配置文件 ''' 生成配置文件 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知 ...

  4. python 面向对象之继承与派生

    一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...

  5. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...

  6. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  7. python面向对象之继承与派生

    一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的 ...

  8. Python进阶:函数式编程实例(附代码)

    Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...

  9. Python接口测试自动化说明及代码实例:含get、post、put、delete等方法

    一.接口说明文档 环境准备: 安装火狐 安装插件: httprequester https://addons.mozilla.org/en-US/firefox/addon/httprequester ...

随机推荐

  1. 关于WebAssembly

    一.WebAssembly是什么? WebAssembly(缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式.Wasm被设计为一个可移植的目标,用于编译C / C ++ / Rust等高级语言,支持 ...

  2. 题解 [BZOJ4886] 叠塔游戏

    题面 解析 这是个有趣的建图题啊. 首先我们可以发现,宽度严格递增是没什么用的. 因为实际上我们在旋转完以后, 矩形的顺序是可以随便排的. 因此只要保证宽度互不相同就行了. 然后,我们对长和宽离散化, ...

  3. 【Android-自定义控件】 漂亮的Toast

    修改Toast属性,美化Toast //创建一个Toast Toast toast=new Toast(getApplicationContext()); //创建Toast中的文字 TextView ...

  4. 【Android-连接数据库】 直接连接SqlServer数据库

    一.测试过的开发环境 Eclispse + SqlServer2008R2 二.下载支持Android的SQL驱动 只能下载1.2.7版本的,将 jtds-1.2.7.jar 包放在android项目 ...

  5. Linq to XML - C#生成XML

    1.System.Xml.XmlDocument  XML file转成字符串  string path3 = @"C:\Users\test.xml";  XmlDocument ...

  6. HTML JS 弹层后底部页面禁止滚动处理

    1.打开新页面时需要禁止鼠标滚轮,禁止页面滑动: 1 2 3 4 在调用显示层时加上这句js代码就可以了: document.documentElement.style.overflow = &quo ...

  7. 洛谷P2789 直线交点数 [数论,递归]

    题目传送门 题目描述 平面上有N条直线,且无三线共点,那么这些直线能有多少不同的交点数? 输入格式 一个正整数N 输出格式 一个整数表示方案总数 输入输出样例 输入 #1 4 输出 #1 5 说明/提 ...

  8. Codevs 3012 线段覆盖 4

    3012 线段覆盖 4 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~100 ...

  9. [JSOI 2016] 最佳团体(树形背包+01分数规划)

    4753: [Jsoi2016]最佳团体 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2003  Solved: 790[Submit][Statu ...

  10. Selenium定位class包含空格的元素-复合class节点

    在HTML中, 节点有三种常见属性, 分别是id, name和class, 其中class是一个特殊的属性, 支持多个类名, 以空格隔开, 如下图所示: 你是否注意到, 为什么selenium中的fi ...