Posted in Python onOctober 28, 2014
相对于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 <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]# ./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中类的继承代码实例
- Author -
junjie声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@