欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Python类与继承讲解

程序员文章站 2022-04-12 08:51:16
...
相对于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中文网(www.php.cn)!

相关标签: Python 类与继承