2012-08-07 112 views
1

我在我的python教科書中閱讀了這些術語,我無法通過查找它們的字面含義來理解它的含義,有人可以向我解釋這一點或爲我提供一些參考嗎?什麼是隱式方法調用和顯式方法調用?

--update術語的背景下

i) (­42).__abs__() # Need parentheses to avoid confusing ... # ... method call '.' with decimal point 
j) (42).__mul__(2) # Even multiplication is a method call 
k) name.swapcase() 
l) name.title().swapcase() # name.title() is an object so ... m) name.upper().find('TOM') # ... we can 「cascade」 method calls. 

希望你現在認識到,大部分的操作你這樣做 迄今在這一過程中實際上已經通過隱含調用的方法 提供您一直在使用的對象(數據項)。 事實上,所有運算符('+','*'等)只是方法調用的語法快捷鍵,但只有一些內置函數對應於 方法。

回答

2

那麼,我不知道你的書中這些術語的上下文,但我發現implicit-vs-explicit-programming。它首先談到了explicit programmingimplicit programming,然後implicit method callexplicit member call。不確定它是否可以提供幫助。也許你可以給我們更多的細節。

編輯

我想它的意思是,當你使用3+23*2看來你你不顯式調用任何方法,但事實上,你說是因爲它們的實現方式是調用(3).__add__(2)(3).__mul__(2)。所以你隱式地調用這些方法。

+0

感謝您爲我提供的鏈接,我仍然在等待一些代碼示例順便說一句,我已經更新了我的課本中術語的上下文 – mko 2012-08-07 03:39:16

3

隱式方法調用意味着特定的方法將被自己調用(如通過java中的JVM)並且顯式方法調用意味着該方法將被用戶調用。

+0

你可以在OOP中做一個示例代碼嗎? – mko 2012-08-07 03:37:45

+0

我認爲爲對象分配內存時的默認構造函數調用可以視爲隱式方法調用(甚至構造函數是一種特殊的方法)。並且調用用戶定義的方法可以被認爲是明確的方法調用 – 2012-08-07 15:47:24

+0

而我可以給出另一個例子,當我們在java中使用System.out.println()並嘗試打印一個整數時,System.out.println()會自動調用toString ()將特定的整數值轉換爲字符串,然後打印出來 – 2012-08-08 03:02:19

0

隱式調用是由編譯器自動進行的函數調用,不受用戶干擾,而用戶使用特定類型的代碼進行顯式調用。

相關問題