To me __init__ is a method, but that is implemented internally as function associated to a class


When you use A.__init__ on it's own and inspect it, then it will show that it is a function object - this is expected. The implementation internals of the runtime don't need to have a special implementation for a method.

Like all of the other __<name>__ methods you shouldn't ever need to call them directly : these are called dunder methods and represent functions and features which are called by other operators.

The only recommended way to call A.__init__ is to create an instance of A : obj = A() - the __init__ method gets called automatically with a newly created object.

If you did call A.__init__() directly on a an already existing object :

     obj = A()
     A.__init__(obj)

for example - all that would happen is that the object itself would be reset : ie the obj's attributes would be reset to whatever the __init__ sets them to - if you need to do that it might be better to have a reset method.


 Regards,

Tony


------ Original Message ------
From: "scruel tao via Python-list" <python-list@python.org>
To: "python-list@python.org" <Python-list@python.org>
Sent: Friday, 15 Sep, 23 At 11:49
Subject: Why doc call `__init__` as a method rather than function?
```python
class A:
...   def __init__(self):
...     pass
...
A.__init__
<function A.__init__ at 0x0000026CFC5CCEE0>
a = A()
a.__init__
<bound method A.__init__ of <__main__.A object at 0x0000026CFC1BB400>>
```
On many books and even the official documents, it seems that many authors prefer to call `__init__` as a "method" rather than a "function". The book PYTHON CRASH COURSE mentioned that "A function that’s part of a class is a method.", however, ` A.__init__` tells that `__init__` is a function...
I wonder how can I call `__init__` as? Consider the output above.
Maybe both are OK? If you prefer or think that we must use one of the two, please explain the why, I really want to know, thanks!
--
https://mail.python.org/mailman/listinfo/python-list <https://mail.python.org/mailman/listinfo/python-list>

-- <br>Anthony Flury<br>anthony.fl...@btinternet.com
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to