微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,age,marks):  
                Member.__init__(self,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,salary):  
                Member.__init__(self,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 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 s);  
    void tell_t();  
private:  
    int salary;  
};  
 
Teacher::Teacher(char *n,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",80);  
    Teacher t("Mrs.Huang",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更简洁些。。。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐