In Python, does 'return self' return a copy of the object or a pointer?

后端 未结 2 1385
太阳男子
太阳男子 2021-02-19 21:05

Let\'s say I have a class

class A:
    def method(self):
        return self

If method is called, is a pointer to the A

相关标签:
2条回答
  • 2021-02-19 21:38

    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.

    0 讨论(0)
  • 2021-02-19 21:54

    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.

    0 讨论(0)
提交回复
热议问题