>ä½ ä»¬ä»æ¯å±èä½çï¼å 为å¨ä½ 们ä¸é´æå«å¦åäºï¼è¿å²ä¸æ¯å±ä¹èä½ï¼ç
§çä¸äººçæ ·åè¡åï¼...ææ ½ç§äºï¼äºæ³¢ç½æµçäºï¼ææç¥å«ä»çé¿ã(1 CORINTHIANS 3:3,6)
#ç±»(5)
##ç»§æ¿
ç»§æ¿ââOOPçä¸ä¸ªç¹å¾ï¼å¤æãç»§æ¿ãå°è£
ââæ¯ç±»çéè¦å
容ã
ç»§æ¿ï¼ä¹æ¯äººç贪欲ã
å¨ç°å®çæ´»ä¸ï¼âç»§æ¿âæå³çä¸ä¸ªäººä»å¦å¤ä¸ä¸ªäººé£éå¾å°äºä¸äºä»ä¹ï¼âç»§æ¿âä¹åï¼èªå·±å°±å¨æç»§æ¿çæ¹é¢çåæ°ãä¸ç¨å³ç¥è´¹å¿ï¼è½è½»æ¾å¾å°ãæ¯å¦ç»§æ¿äºä¸è´¯å®¶äº§ï¼å°±ä¸å¤ä¹é´åæå¯n代ï¼å¦æç»§æ¿äºâé©å½å
ççå
è£ä¼ ç»âï¼å°±çº¢è²ï¼
å½ç¶ï¼çæ´»ä¸çç»§æ¿æè®¸ä¸é£ä¹ä¸¥æ ¼ï¼ä½æ¯ç¼ç¨è¯è¨ä¸çç»§æ¿æ¯ææç¡®è§å®å稳å®çé¢æç»æçã
###æ¦å¿µ
>ç»§æ¿ï¼Inheritanceï¼æ¯é¢å对象软 ä»¶ææ¯å½ä¸çä¸ä¸ªæ¦å¿µã妿ä¸ä¸ªç±»å«Aâç»§æ¿èªâå¦ä¸ä¸ªç±»å«Bï¼å°±æè¿ä¸ªA称为âBçåç±»å«âï¼èæB称为âAçç¶ç±»å«âï¼ä¹å¯ä»¥ç§°âBæ¯Açè¶
ç±»âã
>ç»§æ¿å¯ä»¥ä½¿å¾åç±»å«å
·æç¶ç±»å«çåç§å±æ§åæ¹æ³ï¼èä¸éè¦å次ç¼åç¸åç代ç ãå¨ä»¤åç±»å«ç»§æ¿ç¶ç±»å«çåæ¶ï¼å¯ä»¥éæ°å®ä¹æäºå±æ§ï¼å¹¶éåæäºæ¹æ³ï¼å³è¦çç¶ç±»å«çåæå±æ§åæ¹æ³ï¼ä½¿å
¶è·å¾ä¸ç¶ç±»å«ä¸åçåè½ãå¦å¤ï¼ä¸ºåç±»å«è¿½å æ°ç屿§åæ¹æ³ä¹æ¯å¸¸è§çåæ³ã ï¼æºèªç»´åºç¾ç§ï¼
ç±ä¸é¢å¯¹ç»§æ¿ç表述ï¼å¯ä»¥ç®åæ»ç»åºç»§æ¿çæå¾æè
好å¤ï¼
- å¯ä»¥å®ç°ä»£ç éç¨ï¼ä½ä¸æ¯ä»
ä»
å®ç°ä»£ç éç¨ï¼ææ¶åæ ¹æ¬å°±æ²¡æéç¨
- å®ç°å±æ§åæ¹æ³ç»§æ¿
è¯ç¶ï¼ä»¥ä¸ä¹ä¸æ¯å
¨é¨ï¼éçåç»å¦ä¹ ï¼å¯¹ç»§æ¿ç认è¯ä¼æ´æ·±å»ï¼ä¾å¦ç½å令çè«ææè¿æ ·çè§ç¹ï¼
>仿æ¯ä¸è¯´ï¼OOPéï¼ç»§æ¿æä¸»è¦çç¨éæ¯å®ç°å¤æã对äºå¤æèè¨ï¼éè¦çæ¯æ¥å£ç»§æ¿æ§ï¼å±æ§åè¡ä¸ºæ¯å¦åå¨ç»§æ¿æ§ï¼è¿æ¯ä¸ä¸å®çãäºå®ä¸ï¼å¤§éå·¥ç¨å®è·µè¡¨æï¼é度çè¡ä¸ºç»§æ¿ä¼å¯¼è´ç³»ç»è¿åº¦å¤æåèè¿ï¼åèä¼éä½çµæ´»æ§ãå æ¤ç°å¨æ¯è¾æå¡çæ¯åºäºæ¥å£ç轻度继æ¿ç念ãè¿ç§æ¨¡åéå 为ç¶ç±»ï¼æ¥å£ç±»ï¼å®å
¨æ²¡æä»£ç ï¼å æ¤æ ¹æ¬è°ä¸ä¸ä»ä¹ä»£ç å¤ç¨äºã
>å¨Pythonéï¼å 为åå¨Duck Typeï¼æ¥å£å®ä¹çéè¦æ§å¤§å¤§çéä½ï¼ç»§æ¿çä½ç¨ä¹è¿ä¸æ¥ç被åå¼±äºã
>å¦å¤ï¼ä»é»è¾ä¸è¯´ï¼ç»§æ¿çç®çä¹ä¸æ¯ä¸ºäºå¤ç¨ä»£ç ï¼èæ¯ä¸ºäºç顺å
³ç³»ã
仿¯å¤§çï¼æè®¸è¯»è
æè§æ¯è¾é«æ·±ï¼æ²¡å
³ç³»ï¼éçä½ çå®è·µç»éªç积累ï¼ä½ ä¹è½å¯¹è¿ä¸ªé®é¢æèªå·±ç¬å°çè§è§£ã
æè®¸ä½ ä¹è¦é®æçè§ç¹æ¯ä»ä¹ï¼æçè§ç¹å°±æ¯ï¼èµ°çç§ï¼æä¹çè§£ï¼ç»§ç»åä¸çï¼åªæä½ å
æ·±å
¥è¿ä¸ªé®é¢ï¼æè½è·³å°æ´é«å±çè¿ä¸ªé®é¢ãå°é©¬è¿æ²³çæ
äºè¿è®°å¾å§ï¼åªæäº²èªèµ°å
¥æ²³æ°´ä¸ï¼æç¥éæ²³æ°´çæ·±æµ
ã
å¨Python 2 ä¸ï¼æä»¬è¿æ ·å®ä¹æ°å¼ç±»ï¼
class NewStyle(object):
pass
è¿å°±æ¯å
¸åçç»§æ¿ãè¿ä¸ªç±»ç»§æ¿äº`object`ï¼`object`æ¯ææç±»çç¶ç±»ãè¿ç§å®ä¹æ¯ä»Python 2.2å¼å§çï¼å®è§£å³äºä»¥å¾çç±»åç±»åçä¸ç»ä¸çé®é¢ï¼èªé£ä»¥åï¼ç±»å°±æ¯ä¸ç§æ°æ®ç±»åäºã
åå±å°Python 3ï¼ç±»çå®ä¹å为ï¼
class NewStyle:
pass
ä¸åæ¾ç¤ºå°ååº`object`ï¼æ¯å 为Python 3ä¸çææç±»ï¼é½éå¼å°ç»§æ¿äº`object`ã
æ»èè¨ä¹ï¼`object`å°±æ¯ææç±»çç¶ç±»ã
###åç»§æ¿
è¿æ¯åªä»ä¸ä¸ªç¶ç±»é£éç»§æ¿ã
>>> class P(object): #Python 3: class P:
pass
>>> class C(P):
pass
寥寥æ°âé®âï¼å°±å®ç°äºç»§æ¿ã
ç±»`P`æ¯ä¸ä¸ªé常çç±»ï¼åªä¸è¿å¨Pythonçä¸¤ä¸ªçæ¬ä¸ï¼å®ä¹æ ·å¼ç¨å¾®ä¸åç½¢äºãç±»`C`ï¼æ³¨æåæ¯å¤§åï¼åæ¯å®ä¹çä¸ä¸ªåç±»ï¼å®ç¨`C(P)`çå½¢å¼ç»§æ¿äºç±»`P`ââç§°ä¹ä¸ºç¶ç±»ââè½ç¶ç¶ç±»ä»ä¹ä¹æ²¡æã
åç±»`C`ç»§æ¿ç¶ç±»`P`çæ¹å¼å°±æ¯å¨ç±»åç§°åé¢çæ¬å·éé¢åä¸ç¶ç±»çååï¼ä¸ç®¡æ¯Pythonçåªä¸ªçæ¬ãæ¢ç¶ç»§æ¿äºç¶ç±»ï¼é£ä¹ç¶ç±»çä¸åé½å¸¦å
¥å°äºåç±»ï¼æä»¥å¨Python 2ä¸å°±æ²¡æå¿
è¦éå¤å`object`äºï¼å®å·²ç»éè¿ç¶ç±»`P`被继æ¿å°åç±»`C`äºï¼Python 3ä¸ï¼è¦æ¾å¼çåä¸ç¶ç±»çååï¼é¤äº`object`ï¼å®ä¸ä¼éå¼ç»§æ¿ä»»ä½å
¶å®ç±»ã
>>> C.__base__
è¿è®°å¾ç±»çä¸ä¸ªç¹æ®å±æ§åï¼ç±`C.__base__`å¯ä»¥å¾å°ç±»çç¶ç±»ãåæçæä½ï¼å°±æ¾ç¤ºåºç±»`C`çç¶ç±»æ¯`P`ã
ä¸ºäºæ·±å
¥çè§£âç»§æ¿âçä½ç¨ï¼è®©ç¶ç±»åä¸ç¹ç¹äºæ
ã
>>> class P(object): #Python 3: class P:
def __init__(self):
print "I am a rich man." #Python 3: print("I am a rich man.")
>>> class C(P):
pass
>>> c = C()
I am a rich man.
ç¶ç±»`P`ä¸å¢å äºåå§å彿°ï¼ç¶ååç±»`C`ç»§æ¿å®ãæä»¬å·²ç»çç¥ï¼å½å»ºç«å®ä¾çæ¶åï¼é¦å
è¦æ§è¡ç±»ä¸çåå§å彿°ãå 为åç±»`C`ç»§æ¿äºç¶ç±»ï¼å°±æç¶ç±»ä¸çåå§å彿°æ¿å°äºåç±»éé¢ï¼æä»¥å¨`c = C()`çæ¶åï¼æ§è¡äºç¶ç±»ä¸å®ä¹çåå§å彿°ââè¿å°±æ¯ç»§æ¿ï¼è䏿¯ä»ä¸ä¸ªç¶ç±»é£éç»§æ¿æ¥çï¼æä»¥ä¹ç§°ä¹ä¸ºåç»§æ¿ã
çä¸ä¸ªæ¯è¾å®æçç¨åºç¤ºä¾ã
#!/usr/bin/env python
# coding=utf-8
class Person(object): #Python 3: class Person:
def __init__(self, name):
self.name = name
def height(self, m):
h = dict((["height", m],))
return h
def breast(self, n):
b = dict((["breast", n],))
return b
class Girl(Person):
def get_name(self):
return self.name
if __name__ == "__main__":
cang = Girl("canglaoshi")
print cang.get_name() #Python 3: print(cang.get_name())ï¼ä¸åï¼ä»ç¥
print cang.height(160)
print cang.breast(90)
ä¸é¢è¿ä¸ªç¨åºï¼ä¿åä¹åè¿è¡ï¼
canglaoshi
{'height': 160}
{'breast': 90}
对以ä¸ç¨åºè¿è¡è§£éï¼
é¦å
å®ä¹äºä¸ä¸ªç±»`Person`ï¼æå®ä½ä¸ºç¶ç±»ãç¶åå®ä¹äºä¸ä¸ªåç±»`Girl`ï¼ç»§æ¿äº`Person`ã
å¨åç±»`Girl`ä¸ï¼åªåäºä¸ä¸ªæ¹æ³`get_name()`ï¼ä½æ¯å 为æ¯ç»§æ¿äº`Person`ï¼é£ä¹`Girl`å°±å
¨é¨æ¥æäº`Person`ä¸çæ¹æ³å屿§ãåç±»`Girl`çæ¹æ³`get_name()`ä¸ï¼ä½¿ç¨äºå±æ§`self.name`ï¼ä½æ¯å¨ç±»`Girl`ä¸ï¼å¹¶æ²¡æä»ä¹å°æ¹æ¾ç¤ºå建äºè¿ä¸ªå±æ§ï¼å°±æ¯å 为继æ¿`Person`ç±»ï¼å¨ç¶ç±»ä¸æåå§å彿°ãæä»¥ï¼å½ä½¿ç¨åç±»å建å®ä¾çæ¶åï¼å¿
é¡»ä¼ ä¸ä¸ªåæ°`cang = Girl("canglaoshi")`ï¼ç¶åè°ç¨å®ä¾æ¹æ³`cang.get_name()`ã对äºå®ä¾æ¹æ³`cang.height(160)`ï¼ä¹æ¯å çç»§æ¿çç¼æ
使ç¶ã
å¨ä¸é¢çç¨åºä¸ï¼åç±»`Gril`é颿²¡æä¸ç¶ç±»`Person`éå¤ç屿§åæ¹æ³ï¼ä½ææ¶åï¼ä¼éå°è¿æ ·çæ
åµã
class Girl(Person):
def __init__(self):
self.name = "Aoi sola"
def get_name(self):
return self.name
å¨åç±»éé¢ï¼ä¹åäºä¸ä¸ªåå§å彿°ï¼å¹¶ä¸å®ä¹äºä¸ä¸ªå®ä¾å±æ§`self.name = "Aoi sola"`ãå¨ç¶ç±»ä¸ï¼ä¹æåå§å彿°ãå¨è¿ç§æ
åµä¸ï¼å次æ§è¡ç¨åºã
å¨Python 2ä¸åºç°å¼å¸¸ï¼
TypeError: __init__() takes exactly 1 argument (2 given)
Python 3ä¸ä¹æå¼å¸¸ï¼
TypeError: __init__() takes 1 positional argument but 2 were given
ä¸ç®¡åªä¸ªçæ¬ä¸çå¼å¸¸ä¿¡æ¯ï¼é½åè¯æä»¬ï¼å建å®ä¾çæ¶åï¼ä¼ å
¥çåæ°ä¸ªæ°å¤äºãæ ¹æºå¨äºï¼åç±»`Girl`ä¸çåå§å彿°ï¼åªæä¸ä¸ª`self`ãå 为è·ç¶ç±»ä¸çåå§å彿°éåï¼è½ç¶ç»§æ¿äºç¶ç±»ï¼ä½æ¯å°ç¶ç±»ä¸çåå§å彿°è¦çäºï¼å¯¼è´ç¶ç±»ä¸ç`__init__()`å¨åç±»ä¸ä¸åå®ç°ãæä»¥ï¼å®ä¾ååç±»ï¼ä¸åºè¯¥åæ¾å¼å°ä¼ åæ°ã
if __name__ == "__main__":
cang = Girl() #ä¸å¨æ¾ç¤ºå°ä¼ åæ°
print cang.get_name() #Python 3: print(cang.get_name())ï¼ä¸åï¼ä»ç¥
print cang.height(160)
print cang.breast(90)
妿¤ä¿®æ¹ä¹åï¼åè¿è¡ï¼åæ¾ç¤ºç»æï¼
Aoi sola
{'height': 160}
{'breast': 90}
ä»ç»æä¸ä¸é¾çåºï¼å¦æåç±»ä¸çæ¹æ³æå±æ§è¦çäºç¶ç±»ï¼å³ä¸ç¶ç±»ååï¼ï¼é£ä¹å°±ä¸å¨ç»§æ¿ç¶ç±»çè¯¥æ¹æ³æè
屿§ã
åè¿æ ·ï¼åç±»`Girl`é颿ä¸ç¶ç±»`Person`åæ ·åç§°çæ¹æ³å屿§ï¼ä¹ç§°ä¹ä¸ºå¯¹ç¶ç±»ç¸åºé¨åçéåãéåä¹åï¼ç¶ç±»çç¸åºé¨åä¸å被继æ¿å°åç±»ï¼æ²¡æéåçé¨åï¼å¨åç±»ä¸ä¾ç¶è¢«ç»§æ¿ï¼ä»ä¸é¢ç¨åºå¯ä»¥çåºæ¥æ¤ç»æã
è¿æä¸ç§å¯è½åå¨ï¼å°±æ¯éåä¹åï¼å¦æè¦å¨åç±»ä¸ç»§æ¿ç¶ç±»ä¸ç¸åºé¨åï¼æä¹åï¼
##è°ç¨è¦ççæ¹æ³
æ¿æ¥åé¢çé®é¢åç¨åºï¼å¯ä»¥å¯¹åç±»`Girl`ååºè¿æ ·çä¿®æ¹ã
class Girl(Person):
def __init__(self, name):
Person.__init__(self, name)
self.real_name = "Aoi sola"
def get_name(self):
return self.name
请读è
注æè§å¯`Girl`çåå§åæ¹æ³ï¼ä¸åé¢çææä¸åã为äºè½å¤ä½¿ç¨ç¶ç±»çåå§åæ¹æ³ï¼ä»¥ç±»æ¹æ³çæ¹å¼è°ç¨`Person.__init__(self, name)`ãå¦å¤ï¼å¨åç±»ç`__init__()`çåæ°ä¸ï¼è¦å¢å ç¸åºçåæ°`name`ãè¿æ ·å°±åçäºåé¢çé®é¢ã
å®ä¾ååç±»ï¼ä»¥ä¸é¢çæ¹å¼è¿è¡ç¨åºï¼
if __name__ == "__main__":
cang = Girl("canglaoshi")
print cang.real_name
print cang.get_name()
print cang.height(160)
print cang.breast(90)
æ§è¡ç»æä¸ºï¼
Aoi sola
canglaoshi
{'height': 160}
{'breast': 90}
å°±è¿æ ·ï¼ä½¿ç¨ç±»æ¹æ³çæ¹å¼ï¼å°ç¶ç±»ä¸è¢«è¦ççæ¹æ³å次å¨åç±»ä¸å®ç°ã
ä½ä¸è¿°æ¹å¼æä¸ä¸ªé®é¢ï¼å¦æç¶ç±»çåç§°å 为æç§ç®åä½ æ æ³é¢æçåå ä¿®æ¹äºï¼åç±»ä¸è¯¥ç¶ç±»ççåç§°ä¹è¦ä¿®æ¹ï¼æå¦æç¨åºæ¯è¾å¤ææè
å¿è®°äºï¼å°±ä¼åºç°å¼å¸¸ãäºæ¯ä¹ï¼å°±æäºæ´å·§å¦çæ¹æ³ââ`super`ãåéååç±»ã
class Girl(Person):
def __init__(self, name):
#Person.__init__(self, name)
super(Girl, self).__init__(name)
self.real_name = "Aoi sola"
def get_name(self):
return self.name
ä»
ä»
ä¿®æ¹ä¸å¤ï¼å°`Person.__init__(self, name)`ä¿®æ¹ä¸º`super(Girl, self).__init__(name)`ãæ§è¡ç¨åºåï¼æ¾ç¤ºçç»æä¸ä»¥å䏿 ·ã
å
³äº`super`ï¼æäººåäºé常深å
¥çç ç©¶ï¼æ¨è读è
é
读[ãPythonâs super() considered super! ã](https://rhettinger.wordpress.com/2011/05/26/super-considered-super/)ï¼æä¸å·²ç»æ¢ç©¶äº`super`çå·¥ä½è¿ç¨ã读è
å¦æè¦æ·±å
¥äºè§£ï¼å¯ä»¥é
读è¿ç¯æç« ã
###å¤éç»§æ¿
åé¢æè¯´çç»§æ¿ï¼ç¶ç±»é½åªæä¸ä¸ªãä½ï¼ç»§æ¿å¯ä»¥æ¥èªå¤ä¸ªâç¶âï¼è¿å°±æ¯å¤éç»§æ¿ã
æè°å¤éç»§æ¿ï¼å°±æ¯ææä¸ä¸ªåç±»çç¶ç±»ï¼ä¸æ¢ä¸ä¸ªï¼èæ¯å¤ä¸ªãæ¯å¦ï¼
#!/usr/bin/env python
# coding=utf-8
class Person(object): #Python 3: class Person:
def eye(self):
print "two eyes" #Python 3: print("two eyes")ï¼ä¸åï¼ä»ç¥
def breast(self, n):
print "The breast is: ",n
class Girl(object): #Python 3: class Gril:
age = 28
def color(self):
print "The girl is white"
class HotGirl(Person, Girl):
pass
if __name__ == "__main__":
kong = HotGirl()
kong.eye()
kong.breast(90)
kong.color()
print kong.age
å¨è¿ä¸ªç¨åºä¸ï¼åé¢æä¸¤ä¸ªç±»`Person`å`Girl`ï¼ç¶å第ä¸ä¸ªç±»`HotGirl`ç»§æ¿äºè¿ä¸¤ä¸ªç±»ï¼æ³¨æè§å¯ç»§æ¿æ¹æ³ï¼å°±æ¯å¨ç±»çåååé¢çæ¬å·ä¸ææç»§æ¿ç两个类çåååä¸ã使¯ç¬¬ä¸ä¸ªç±»ä¸ä»ä¹æ¹æ³ä¹æ²¡æã
ç¶åå®ä¾åç±»`HotGirl`ï¼æ¢ç¶ç»§æ¿äºä¸é¢ç两个类ï¼é£ä¹é£ä¸¤ä¸ªç±»çæ¹æ³å°±é½è½å¤æ¿è¿æ¥ä½¿ç¨ãä¿åç¨åºï¼è¿è¡ä¸ä¸çç
$ python 20902.py
two eyes
The breast is: 90
The girl is white
28
å¼å¾æ³¨æçæ¯ï¼è¿æ¬¡å¨ç±»`Girl`ä¸ï¼æä¸ä¸ª`age = 28`ï¼å¨å¯¹HotGirlå®ä¾åä¹åï¼å 为继æ¿çåå ï¼è¿ä¸ªç±»å±æ§ä¹è¢«ç»§æ¿å°`HotGirl`ä¸ï¼å æ¤éè¿å®ä¾å±æ§`kong.age`䏿 ·è½å¤å¾å°è¯¥æ°æ®ã
ç±ä¸è¿°ä¸¤ä¸ªå®ä¾ï¼å·²ç»æ¸
æ¥çå°äºç»§æ¿çç¹ç¹ï¼å³å°ç¶ç±»çæ¹æ³å屿§å
¨é¨æ¿æ¥å°åç±»ä¸ï¼å¦æåç±»éåäºç¶ç±»çæ¹æ³ï¼å°±ä½¿ç¨åç±»çè¯¥æ¹æ³ï¼ç¶ç±»ç被é®çã
å¤éç»§æ¿ç顺åºå¾å¿
è¦äºè§£ã
æ¯å¦ï¼å¦æä¸ä¸ªå类继æ¿äºä¸¤ä¸ªç¶ç±»ï¼å¹¶ä¸ä¸¤ä¸ªç¶ç±»æåæ ·çæ¹æ³æè
屿§ï¼é£ä¹å¨å®ä¾ååç±»åï¼è°ç¨é£ä¸ªæ¹æ³æå±æ§ï¼æ¯å±äºåªä¸ªç¶ç±»çå¢ï¼é ä¸ä¸ªæ²¡æå®é
æä¹ï¼çº¯ç²¹ä¸ºäºè§£å³è¿ä¸ªé®é¢çç¨åºï¼
#!/usr/bin/env python
# coding=utf-8
class K1(object): #Python 3: class K1:
def foo(self):
print "K1-foo" #Python 3: print("K1-foo")ï¼ä¸åï¼ä»ç¥
class K2(object): #Python 3: class K2:
def foo(self):
print "K2-foo"
def bar(self):
print "K2-bar"
class J1(K1, K2):
pass
class J2(K1, K2):
def bar(self):
print "J2-bar"
class C(J1, J2):
pass
if __name__ == "__main__":
print C.__mro__
m = C()
m.foo()
m.bar()
è¿æ®µä»£ç ï¼ä¿ååè¿è¡ï¼
$ python 20904.py
(, , , , , )
K1-foo
J2-bar
代ç ä¸ç`print C.__mro__`æ¯è¦æå°åºç±»çç»§æ¿é¡ºåºãä»ä¸é¢æ¸
æ°çåºæ¥äºãå¦æè¦æ§è¡`foo()`æ¹æ³ï¼é¦å
ç`J1`ï¼æ²¡æï¼ç`J2`ï¼è¿æ²¡æï¼ç`J1`éé¢ç`K1`ï¼æäºï¼å³C==>J1==>J2==>K1ï¼`bar()`乿¯æç
§è¿ä¸ªé¡ºåºï¼å¨`J2`ä¸å°±æ¾å°äºä¸ä¸ªã
è¿ç§å¯¹ç»§æ¿å±æ§åæ¹æ³æç´¢ç顺åºç§°ä¹ä¸ºâ广度ä¼å
âã
Python 2çæ°å¼ç±»ï¼ä»¥åPython 3ä¸é½æ¯æç
§æ¤é¡ºåºååæå¯»å±æ§åæ¹æ³çã
使¯ï¼å¨æ§å¼ç±»ä¸ï¼æ¯æç
§â深度ä¼å
âç顺åºçãå 为åé¢è¯»è
ä¹åºæ¬ä¸ç¨æ§å¼ç±»ï¼æä»¥ä¸ä¸¾ä¾ãå¦æè¯»è
æ¿æï¼å¯ä»¥èªå·±æ¨¡ä»¿ä¸é¢ä»£ç ï¼æ¢ç´¢æ§å¼ç±»çâæ·±åº¦ä¼å
âå«ä¹ã
å¯¼è´æ°å¼ç±»åPython 3ä¸ç»§æ¿é¡ºåºè¾æ§å¼ç±»ææååï¼å
¶åå æ¯mroï¼Method Resolution Orderï¼ç®æ³ï¼è¯»è
对æ¤è¥æå
´è¶£ï¼å¯ä»¥å°ç½ä¸æç´¢å
³äºè¿ä¸ªç®æ³çå
容è¿è¡äºè§£ã
------
[æ»ç®å½](./index.md) | [ä¸èï¼ç±»(4)](./238.md) | [ä¸èï¼å¤æåå°è£
](./211.md)
å¦æä½ è®¤ä¸ºæå¿
è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã