Sobes.tech
Junior — Middle

რა ხდება პირველად: ობიექტის შექმნისას კონსტრუქტორის შესრულება თუ init მეთოდის გამოძახება?

sobes.tech AI

პასუხი AI-სგან

Python-ში, როდესაც ობიექტი შეიქმნება, პირველად იძახება მეთოდი __new__, რომელიც პასუხისმგებელია კლასის ინстанციის შექმნაზე, შემდეგ კი იძახება კონსტრუქტორი __init__, რომელიც ინიციალიზებს შექმნილ ობიექტს.

Python-ში init როგორც ცალკე სტანდარტული მეთოდი არ არსებობს, სავარაუდოდ იგულისხმება __init__.

საერთო წესით, წესრიგი ასეა:

  1. __new__ — ობიექტის შექმნა
  2. __init__ — ობიექტის ინიციალიზაცია

მაგალითი:

class MyClass:
    def __new__(cls, *args, **kwargs):
        print('ობიექტის შექმნა')
        return super().__new__(cls)

    def __init__(self):
        print('ობიექტის ინიციალიზაცია')

obj = MyClass()

გამოტანა:

ობიექტის შექმნა
ობიექტის ინიციალიზაცია