Ответ 1
__init__()
возвращает None
. Это __new__()
, который возвращает новый экземпляр.
class Num:
def __init__(self,num):
self.n = num
Я прочитал, что метод __init__
возвращает None
. Когда я выполняю a=Num(5)
, Num(5)
вызывает метод __init__
класса. Но если __init__
возвращает None
, то a
должен ссылка ничего. Но вместо этого a
ссылается на объект Num
Class.Как это происходит? Так что __init__
return None
или объект класса?
__init__()
возвращает None
. Это __new__()
, который возвращает новый экземпляр.
При выполнении a = Num (5) вы создаете объект, а вновь созданный объект возвращается. Но это не так просто, как вы могли бы напрямую вызвать __init__
при создании объекта.
__init__
называется частью процесса инициирования некоторой магией Python в фоновом режиме. И в основном __new__
является частью этой магии. Однако есть только редкие случаи, когда вы хотите играть с __new__
. Вы должны делать это только в том случае, если вы действительно знаете, что делаете, и если нет действительно простых способов достичь своей цели.