2011-07-28 65 views

回答

2

Java的確如此。

Python沒有。

Python是強烈動態類型的。你創建一個對象,它將永遠是那種類型。但是,指向該對象的變量可以指向任何類型的任何對象,並且不必知道它指向的是什麼類型的對象。

編輯根據在評論的問題:

這允許您定義可以由預期字典或列表,或其他類型的,很容易的大部分功能被使用的類。所以如果我想創建一個特殊類型的列表,當你迭代它時,按照自定義順序返回對象,我所要做的就是聲明一個支持__getitem____iter__和其他一些方法的類,以及其他類將使用它,就像它是一個列表一樣。

有關Python中抽象基類的信息,請參閱http://docs.python.org/glossary.html#term-abstract-base-class。在使用中,它們與Java中的抽象基類很相似。

+0

這樣會讓Java變得更好吧?這似乎是更多的空間與Python的錯誤 – Misty

+2

這是一個功能。它給你更多的權力。您可以定義一個類似列表的類,並且可以由任何接受列表的方法使用。您可以創建一個類似文件的類,並允許您將數據提供給需要文件對象的代碼或從中獲取數據。 – agf

+1

「更好」是在旁觀者的眼中。和你一樣,我認爲缺乏強大的類型檢查會導致更多的錯誤 - 或者,當我編寫代碼時會發生。 (也許我需要編譯器作爲一個柺杖。)但是我遇到了很多喜歡Python或PHP的非強類型的程序員。 – Marvo

8

Python與Ruby一樣使用Duck Typing,這是一種動態類型的風格。 Java顯然是靜態類型的,類型檢查是在編譯時完成的。