相对于C++的继承编写,Python更简洁,而且效率也是很高的,下面编写一个简单Python的继承例子。
<br />#!/usr/bin/python <br />#filename: pyclass.py <br /> <br />class Member: <br /> def __init__(self, name, age): <br /> self.name = name <br /> self.age = age <br /> print 'Member init:%s' % self.name <br /> def tell(self): <br /> print 'Name:%s,Age:%d' % (self.name, self.age), <br /> <br />class Student(Member): <br /> def __init__(sel<mark style="color:transparent">本文来源gaodaimacom搞#^代%!码网@</mark>f, name, age, marks): <br /> Member.__init__(self, name, age) <br /> self.marks = marks <br /> print 'Student init:%s' % self.name <br /> def tell(self): <br /> Member.tell(self) <br /> print 'Marks:%d' % self.marks <br /> <br />class Teacher(Member): <br /> def __init__(self, name, age, salary): <br /> Member.__init__(self, name, age) <br /> self.salary = salary <br /> print 'Teacher init:%s' % self.name <br /> def tell(self): <br /> Member.tell(self) <br /> print 'Salary:%d' % self.salary <br /> <br />s = Student('Tom', 20, 80) <br />t = Teacher('Mrs.Huang', 30, 50000) <br /> <br />members = [s, t] <br />for mem in members: <br /> mem.tell() <br />
运行效果:
<br />[root@localhost hhl]# python pyclass.py <br />Member init:Tom <br />Student init:Tom <br />Member init:Mrs.Huang <br />Teacher init:Mrs.Huang <br />Name:Tom,Age:20 Marks:80 <br />Name:Mrs.Huang,Age:30 Salary:50000 <br />
我们同样编写同样效果的C++例子:
<br />//filename: class.cpp <br />#include <br />#include <br />using namespace std; <br /> <br />class Member <br />{ <br />public: <br /> Member(char *n, int a); <br /> void tell(); <br />private: <br /> char name[10]; <br /> int age; <br />}; <br /> <br />Member::Member(char *n, int a) <br />{ <br /> memcpy(name, n, sizeof(name)); <br /> age = a; <br /> cout<<"Member init:"<<name<<endl; <br />} <br /> <br />void Member::tell() <br />{ <br /> cout<<"Name:"<<name<<","<<"Age:"<} <br /> <br />class Student:public Member <br />{ <br />public: <br /> Student(char *n, int a, int m); <br /> void tell_s(); <br />private: <br /> int marks; <br />}; <br /> <br />Student::Student(char *n, int a, int m):Member(n, a) <br />{ <br /> marks = m; <br /> cout<<"Student init:"<<n<<endl; <br />} <br /> <br />void Student::tell_s() <br />{ <br /> Member::tell(); <br /> cout<<"Marks:"<<marks<<endl; <br />} <br /> <br />class Teacher:public Member <br />{ <br />public: <br /> Teacher(char *n, int a, int s); <br /> void tell_t(); <br />private: <br /> int salary; <br />}; <br /> <br />Teacher::Teacher(char *n, int a, int s):Member(n, a) <br />{ <br /> salary = s; <br /> cout<<"Teacher init:"<<n<<endl; <br />} <br /> <br />void Teacher::tell_t() <br />{ <br /> Member::tell(); <br /> cout<<"Salary:"<<salary<<endl; <br />} <br /> <br />int main(void) <br />{ <br /> Student s("Tom", 20, 80); <br /> Teacher t("Mrs.Huang", 30, 50000); <br /> <br /> s.tell_s(); <br /> t.tell_t(); <br /> <br /> return 0; <br />} <br />
运行效果:
<br />[root@localhost hhl]# ./class <br />Member init:Tom <br />Student init:Tom <br />Member init:Mrs.Huang <br />Teacher init:Mrs.Huang <br />Name:Tom,Age:20,Marks:80 <br />Name:Mrs.Huang,Age:30,Salary:50000 <br />
这两者的运行效果是一样的,但是python更简洁些。。。