Python 调用对象和被调用对象

Python 调用对象和被调用对象,python,oop,Python,Oop,当我们编写object1.methodobject2时,哪个是调用对象,哪个是被调用对象?这是否意味着正在使用参数object2对object1调用方法?或者仅仅是object1是调用对象,object2是被调用对象 请注意,为了回应下面的评论,让我澄清一下- 调用对象指调用方法的对象。被调用对象是指方法作用的对象 如果这是名为object3的对象的方法代码的一部分,那么可以说object3是调用对象,而object1是被调用对象。object2只是一个参数: class Foo: de

当我们编写object1.methodobject2时,哪个是调用对象,哪个是被调用对象?这是否意味着正在使用参数object2对object1调用方法?或者仅仅是object1是调用对象,object2是被调用对象

请注意,为了回应下面的评论,让我澄清一下-


调用对象指调用方法的对象。被调用对象是指方法作用的对象

如果这是名为object3的对象的方法代码的一部分,那么可以说object3是调用对象,而object1是被调用对象。object2只是一个参数:

class Foo:
    def amethod():
        ...
        object1.method(object2)

...

object3 = Foo()
object3.amethod()        
当我们编写object1.methodobject2时,哪个是调用对象,哪个是被调用对象

让我们后退。调用对象实际上并不是一个常见的术语,它非常模糊。我想这是你感到困惑的部分原因

编写object1.methodobject2时,您正在调用object1的方法,并将object2作为参数传递给该方法。这就是正在发生的事情

object1不是调用对象。它只是一个对象,其方法属性正在被调用。不能根据se1调用对象。您可以说object1是从中调用方法的对象。那是正确的

同样,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
>>> 

1从技术上讲,您可以通过调用对象的方式调用对象。但为了避免让您感到困惑,请暂时忽略这一点。

调用对象实际上不是一个定义良好的概念。调用对象是调用该方法的对象。调用对象作为第一个参数隐式传递,例如,在其类定义中作为self:object1.methodobject2与methodobject1相同,这正是我所想的。感谢您的澄清和确认。我所说的对象就是方法作用的对象。现在我很清楚,该方法使用object2作为参数作用于object1。谢谢你的回复。