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. setup elk with docker-compose

    version: '2' services: elasticsearch: image: docker.calix.local:18080/docker-elasticsearch:6.2.2-1 c ...

  2. CSS实现按钮YES-NO按钮+Jquery获取按钮状态。

    前几天我经理突然跟我说,能不能做一个开关按钮,需要过滤的一个标识.说实话,一个做后端我是懵逼状态的. 不过网上资料很多,查了一遭,发现一个不错的哥们给出的案例,模仿一下成功实现,下面就自己总结一下: ...

  3. 洛谷P1140 相似基因【线性dp】

    题目:https://www.luogu.org/problemnew/show/P1140 题意: 给定两串基因串(只包含ATCG),在其中插入任意个‘-’使得他们匹配.(所以一共是5种字符) 这5 ...

  4. Java项目笔记01

    1 Tomcat问题 1 今天用了Ecplise和MyEcplise想着用同一个路径下的Tomcat,但是却发现配置完Ecplise后MyEcplise却不能用了,并且后面在bin里启动Tomcat还 ...

  5. JS上传大文件的解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  6. B/S上传大文件的解决方案

    第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname =  ...

  7. php+文件夹上传实例

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  8. c/c++读取一行可以包含空格的字符串(getline,fgets用法)

    1.char[]型 char buf[1000005]; cin.getline(buf,sizeof(buf)); 多行文件输入的情况: while(cin.getline(buf,sizeof(b ...

  9. Noip2015 提高组 Day1

    T1神奇的幻方 直通 思路: 制定一个lrow记录上一个数字所在的行数,lcolume记录上一个数字所在的列数,然后根据题目的描述进行更改即可 上代码: #include <iostream&g ...

  10. 「BZOJ 5010」「FJOI 2017」矩阵填数「状压DP」

    题意 你有一个\(h\times w\)的棋盘,你需要在每个格子里填\([1, m]\)中的某个整数,且满足\(n\)个矩形限制:矩形的最大值为某定值.求方案数\(\bmod 10^9+7\) \(h ...