Python类与继承讲解

黄舟
黄舟 原创
2016-12-24 17:18:20 1000浏览

相对于C++的继承编写,Python更简洁,而且效率也是很高的,下面编写一个简单Python的继承例子。

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]

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++例子:

#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]

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类与继承讲解的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。