創(chuàng)建Jython類的過(guò)程探討
創(chuàng)建Jython類與創(chuàng)建全局函數(shù)一樣容易。清單 13 提供了一個(gè)示例:
清單 13. 用戶定義的Jython類的簡(jiǎn)單示例(保存在名為 listing13.py 的文件中)
- class Dog:
- def __init__(self, bark_text):
- self.bark_text = bark_text
- return
- def bark(self):
- print self.bark_text
- return
- def annoy_neighbors(self, degree):
- for i in range(degree):
- print self.bark_text
- return
- print "Fido is born"
- fido = Dog("Bow wow")
- print "Let's hear from Fido"
- fido.bark()
- print "Time to annoy the neighbors"
- fido.annoy_neighbors(5)
上述代碼中,第一行命名該Jython類,其定義完全是一個(gè)大的代碼塊。
定義的第一個(gè)方法是特殊的 初始化程序(類似于 Java 構(gòu)造函數(shù))。它總是命名為 __init__ ,而且每當(dāng)創(chuàng)建該類的新實(shí)例時(shí)就調(diào)用它。在 Jython 中,將正被調(diào)用(或在初始化程序的情況中,被創(chuàng)建)的當(dāng)前實(shí)例顯式聲明為參數(shù)。傳統(tǒng)上這個(gè)參數(shù)稱為 self 。
在 Dog 初始化程序中, bark_text 參數(shù)是一個(gè)字符串,通過(guò)使用 self 將它存儲(chǔ)為實(shí)例變量。在調(diào)用方法 bark() 時(shí)不采用任何顯式參數(shù),但仍須指定 self 。
方法 annoy_neighbors 確實(shí)采用了一個(gè)顯式參數(shù),它是除了 self 之外指定的另一個(gè)參數(shù),并且它是狗為了煩擾鄰居而叫嚷的次數(shù)。請(qǐng)注意代碼運(yùn)行時(shí)很容易進(jìn)入深度嵌套,因此要進(jìn)行縮進(jìn)。在該類定義的方法 annoy_neighbors 定義內(nèi)有一個(gè)循環(huán)塊。以 print "Fido is born" 開始的代碼再次演示了該類。清單 13 的輸出類似如下:
清單 14. 清單 13 的輸出
- $ jython listing13.py
- Fido is born
- Let's hear from Fido
- Bow wow
- Time to annoy the neighbors
- Bow wow
- Bow wow
- Bow wow
- Bow wow
- Bow wow
Jython類這樣簡(jiǎn)單就創(chuàng)建了。
【編輯推薦】