In Python, does 'return self' return a cop

2019-04-24 07:16发布

问题:

Let's say I have a class

class A:
    def method(self):
        return self

If method is called, is a pointer to the A-object going to be returned, or a copy of the object?

回答1:

It returns a reference:

>>> a = A()
>>> id(a)
40190600L
>>> id(a.method())
40190600L
>>> a is a.method()
True

You can think of it this way: You actually pass self to the .method() function as an argument and it returns the same self.



回答2:

It returns a reference to the object, look at the following example:

class A:
    def method(self):
        return self

a = A()
print id(a.method())
print id(a)
> 36098936
> 36098936

b = a.method()
print id(b)
> 36098936

About the id function (from python docs):

Return the “identity” of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime.