相對于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
#include
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:"<
}??
?
void Member::tell()??
{??
??? cout<<"Name:"<
}??
?
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:"<
}??
?
void Student::tell_s()??
{??
??? Member::tell();??
??? cout<<"Marks:"<
}??
?
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:"<
}??
?
void Teacher::tell_t()??
{??
??? Member::tell();??
??? cout<<"Salary:"<
}??
?
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更簡潔些。。。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
