Vraag Wat doet de __init__-methode terug in python


class Num:
   def __init__(self,num):
      self.n = num

Ik las dat de __init__ methode retourneert None. Wanneer ik speel a=Num(5), Num(5) zal bellen __init__ methode van de klas. Maar als __init__  komt terug None dan a moet verwijzen naar niets. Maar in plaats daarvan a verwijst naar het object van Num Klasse. Hoe gebeurt het? __init__ terugkeer None of het doel van de klas?


15
2017-08-16 05:50


oorsprong


antwoorden:


__init__() komt terug None. Het is __new__() die de nieuwe instantie retourneert.


34
2017-08-16 05:51



Wanneer u een = Num (5) doet, maakt u het object en wordt het nieuw gemaakte object geretourneerd. Maar het is niet zo eenvoudig als u direct zou bellen __init__ bij het maken van het object. __init__ wordt door de Python-magie op de achtergrond geroepen als onderdeel van het initiatieproces. En eigenlijk het __new__ maakt deel uit van die magie. Er zijn echter slechts enkele gevallen waar je mee wilt spelen __new__. Doe dit alleen als je echt weet wat je doet en als er echt geen eenvoudiger manieren zijn om je doel te bereiken.


1
2017-08-16 06:02