當我們編寫object1.method(object2)
時,哪個調用對象和哪個被調用對象?這是不是意味着在object1
上調用method
(參數object2
)?還是僅僅object1
是調用對象而object2
是調用對象?調用對象和被調用對象
注意在回答下面留言,讓我澄清 -
「調用對象」是指調用method
的對象。 「所謂的對象」是指method
所作用的對象。
當我們編寫object1.method(object2)
時,哪個調用對象和哪個被調用對象?這是不是意味着在object1
上調用method
(參數object2
)?還是僅僅object1
是調用對象而object2
是調用對象?調用對象和被調用對象
注意在回答下面留言,讓我澄清 -
「調用對象」是指調用method
的對象。 「所謂的對象」是指method
所作用的對象。
如果這是一個叫做object3
的對象的方法的代碼的一部分,那麼可以說object3
是「調用對象」,而object1
是「調用對象」。 object2
只是一個說法:
class Foo:
def amethod():
...
object1.method(object2)
...
object3 = Foo()
object3.amethod()
這正是我的想法。感謝您澄清和確認。 – debashish
當我們寫
object1.method(object2)
,這是調用對象,這是所謂的對象?
讓我們備份吧。 「呼叫對象」不是一個真正常用的術語,它的含義很模糊。我認爲這是你感到困惑的部分原因。
當編寫object1.method(object2)
你是主叫method
的對象object1
的方法和傳遞object2
作爲參數給方法。這就是發生的事情。
object1
不是「調用對象」。它只是一個對象,其method
屬性被調用。您無法撥打對象本身。您可以改爲object1
是對象,其中method
方法爲,稱爲。那是對的。
同樣,object2
不是「被調用對象」。反正它從來沒有被調用過。它只是作爲參數傳遞給object1.method()
。這裏的一切的一個簡單的例子,我上面說:
>>> class Object:
... def method(self, arg):
... print("I'm just an argument", arg)
... # This method is simply for pretty printing
... def __repr__(self):
... return 'object'
...
>>>
>>> # Here's object1. We'll call its method attribute and pass in
... # object2 as an argument.
...
>>> object1 = Object()
>>> # Here's object2. It's only being passed as an argument.
...
>>> object2 = Object()
>>>
>>> # Here's the call
...
>>> object1.method(object2)
I'm just an argument object
>>>
從技術上講,你可以電話的對象,通過一種叫operator overloading。但爲了避免讓你感到困惑,現在就忽略它。
我所說的「被調用的對象」是「方法」在其上作用的對象。現在我清楚的知道'method'作用於'object1'作爲參數。感謝您的回覆。 – debashish
「調用對象」實際上並不是一個明確定義的概念。 – Amber
「調用對象」是調用「方法」的對象。 – debashish
「調用對象」作爲第一個參數隱式傳遞(例如,在其類定義中作爲「self」):'object1.method(object2)'與'method(object1,object2)'相同。 – GH05T