相對(duì)于c++的繼承編寫,python更簡(jiǎn)潔,而且效率也是很高的,下面編寫一個(gè)簡(jiǎn)單python的繼承例子。
class?Member: ??
????????def?__init__(self,?name,?age): ??
????????????????self.name?=?name ??
????????????????self.age?=?age ??
立即學(xué)習(xí)“Python免費(fèi)學(xué)習(xí)筆記(深入)”;
????????????????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()??
運(yùn)行效果:
[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; ??
}??
運(yùn)行效果:
[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??
這兩者的運(yùn)行效果是一樣的,但是python更簡(jiǎn)潔些。。。
?以上就是Python類與繼承講解的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(ipnx.cn)!
python怎么學(xué)習(xí)?python怎么入門?python在哪學(xué)?python怎么學(xué)才快?不用擔(dān)心,這里為大家提供了python速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)