#ç¼åç±»ä¹ååè®ºç»§æ¿ å¨ä¸ä¸è®²ä»£ç çåºç¡ä¸ï¼åè¿ä¸æ¥ä¿®æ¹ï¼æä¸ºäºå¦ä¸ç¨åºï¼è¯·çå®ç ä¹ è¿ä¸ªç¨åºï¼ #!/usr/bin/env python #coding:utf-8 class Person: def __init__(self, name, email): self.name = name self.email = email class Programmer(Person): def __init__(self, name,email,lang, system, website): Person.__init__(self,name,email) self.lang = lang self.system = system self.website = website class Pythoner(Programmer): def __init__(self,name,email): Programmer.__init__(self,name,email,"python","Ubuntu","qiwsir.github.io") if __name__=="__main__": writer = Pythoner("qiwsir","[email protected]") print "name=",writer.name print "lang=",writer.lang print "email=",writer.email print "system=",writer.system print "website=",writer.website #è¿è¡ç»æ name= qiwsir lang= python email= [email protected] system= Ubuntu website= qiwsir.github.io å¯¹ç»æå¾æ»¡æï¼åçç¨åºä¸çç»§æ¿å ³ç³»ï¼Pythoner <-- Programmer <-- Personï¼ä»ä¸é¢çè¿ç¨ä¸ä¸é¾çåºï¼ç»§æ¿è½å¤åå°ä»£ç éå¤ï¼æ¯çä»£ç æ´ç®ç»ãå¦å¤ï¼å¨ç»§æ¿çæ¶åï¼ä¹å¯ä»¥å¨å½æ°ä¸å¯¹åæ°è¿è¡é»è®¤èµå¼ã 为äºè½å¤çªåºç»§æ¿é®é¢çæ¢ç©¶ï¼è¿æ¯ç¨é£ç§ç®åçç±»æ¥åå®éªã ##å¤ä½çB #!/usr/bin/env python #coding:utf-8 class A: def __init__(self): print "aaa" class B(A): pass if __name__=="__main__": a = A() b = B() #è¿è¡ç»æ aaa aaa Bç»§æ¿Aï¼æ²¡æä»»ä½ä¿®æ¹å°ç»§æ¿ï¼Bå°±å¯ä»¥ä¸ç¨åä»»ä½ä¸è¥¿äºï¼æè 说Bæ¬è´¨ä¸å°±æ¯ä¸ä¸ªå¤ä½ãå¨çå®çç¼ç¨è¿ç¨ä¸ï¼æ²¡æè¿æ ·åçï¼è¿éä» ä» æ¯ä¸ºäºåçå®å±ç¤ºä¸ä¸ç»§æ¿çå«ä¹ç½¢äºã ##é¦ä¸ªç»§æ¿ææ #!/usr/bin/env python #coding:utf-8 class A: def __init__(self): print "aaa" class B: def __init__(self): print "bbb" class C1(A,B): pass class C2(B,A): pass if __name__=="__main__": print "A--->", a = A() print "B--->", b = B() print "C1(A,B)--->", c1 = C1() print "C2(B,A)--->", c2 = C2() #è¿è¡ç»æ A---> aaa B---> bbb C1(A,B)---> aaa C2(B,A)---> bbb åä½ç宿¯å¦æ³¨æäºï¼ç±»C1ç»§æ¿äºä¸¤ä¸ªç±»Aï¼Bï¼ç±»C2ä¹ç»§æ¿äºä¸¤ä¸ªç±»ï¼åªä¸è¿ä¹¦åé¡ºåºæç¹åºå«(B,A)ãä»è¿è¡ç»æå¯ä»¥çåºï¼å½å类继æ¿å¤ä¸ªç¶ç±»çæ¶åï¼å¯¹äºæé 彿°`__init__()`ï¼åªæç¬¬ä¸ä¸ªè½å¤è¢«ç»§æ¿ï¼ç¬¬äºä¸ªå°±çæäºãæä»¥ï¼ä¸è¬æ åµä¸ï¼ä¸ä¼å¨ç¨åºä¸åå ³äºæé 彿°çåæ¶å¤ä¸ªç»§æ¿ï¼ä¸è¿å¯ä»¥æ¥åç»§æ¿ï¼å°±å¦ååé¢é£ä¸ªæ¯è¾çå®ç代ç 䏿 ·ã ##å ¶å®æ¹æ³çç»§æ¿ #!/usr/bin/env python #coding:utf-8 class A: def __init__(self): print "aaa" def amethod(self): print "method a" class B(A): def __init__(self): print "bbb" if __name__=="__main__": print "A--->" a = A() a.amethod() print "B--->" b = B() b.amethod() #è¿è¡ç»æ A---> aaa method a B---> bbb method a 为äºè¯´æç½ä¸é¢çæ åµï¼è¿æ¯ç»äºä¸å¼ å¾ï¼ä¸è¿ï¼æç»å®ä¹åï¼å°±åæäºï¼çè¿å¼ å¾å¥½åæ´ç³æ¶äºãæä¹çä¹ç»äºï¼è¿æ¯è´´åºæ¥ï¼å¦æè½å¤åå©çè§£æ´å¥½äºã  Açå®ä¾åè°ç¨ï¼å°±ä¸å¤è¯´äºãéç¹çBï¼ç±»Bç»§æ¿äºAï¼åæ¶ï¼B卿é 彿°ä¸èªå·±åäºè§å®ï¼ä¹å°±æ¯Bçæé 彿°æ¯æç §Bçææ¿æ§è¡ï¼ä¸æ§è¡Açå 容ï¼ä½æ¯ï¼Aè¿æä¸ä¸ªamethod(self)æ¹æ³ï¼Båç»§æ¿äºè¿ä¸ªæ¹æ³ãå½éè¿ç±»Bçå®ä¾è°ç¨è¿ä¸ªæ¹æ³çæ¶åï¼å°±è½å¤æåäºï¼b.amethod() è¿å°±æ¯æ¹æ³çç»§æ¿åè°ç¨æ¹æ³ã æè°ç»§æ¿ï¼å°±æ¯ä»ä¸å°ä¸ä¸çº§ä¸çº§å°æ¾ç¸åºçç»§æ¿å¯¹è±¡ï¼æ¾å°äºå°±ç»§æ¿ä¹ã妿æååçæä¹åï¼æç §ä»ä¹é¡ºåºæ¾å¢ï¼ åºç¨ç½ä¸ç䏿®µï¼ [å¨Pythonä¸ï¼å¯ä»¥é²è¡å¤éç¹¼æ¿ï¼éåæåè¦æ³¨ææå°çé åºï¼æ¯å¾åé¡å¥éå§ï¼æ¥èæ¯åä¸é層ç¶é¡å¥ç±å·¦è³å³æå°ï¼åè³æ´ä¸å±¤åä¸é層ç¶é¡å¥ç±å·¦è³å³æå°ï¼ç´å°éå°é å±¤çºæ¢ã](http://openhome.cc/Gossip/Python/Inheritance.html) 代ç 举ä¾ï¼ class A(object): def method1(self): print('A.method1') def method2(self): print('A.method2') class B(A): def method3(self): print('B.method3') class C(A): def method2(self): print('C.method2') def method3(self): print('C.method3') class D(B, C): def method4(self): print('C.method4') d = D() d.method4() # å¨ D æ¾å°ï¼C.method4 d.method3() # 以 D->B é åºæ¾å°ï¼B.method3 d.method2() # 以 D->B->C é åºæ¾å°ï¼C.method2 d.method1() # 以 D->B->C->A é åºæ¾å°ï¼A.method1 å¡å¿ è¯·çæ£çå¦ä¹ è è¦å¯¹ç §æ¯ä¸ªç±»çæ¯ä¸ªæ¹æ³ï¼ä¾æ¬¡æ¾å°ç¸åºçè¾åºç»æãä»èç解继æ¿ç顺åºãå¦ä¹ ï¼å°±è¦ç¹æ»´ç§¯ç´¯ã