Sobes.tech
Middle

Python ენის კონტექსტში რა აკეთებს new მეთოდი?

sobes.tech AI

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

__new__ - ეს კლასის მეთოდია, რომელიც პასუხისმგებელია ახალი კლასის ინстанციის შექმნაზე. იგი იძახება წინ __init__ და განსაზღვრავს, რომელი ობიექტი უნდა დაბრუნდეს. ძირითადად გამოიყენება უნიკალური ობიექტების (Singleton) ან უცვლელი ტიპის ობიექტების (მაგალითად, tuple ან str) შექმნისთვის.

class Singleton:
    _instance = None

    def __new__(cls):
        # შემოწმება, თუ უკვე არსებობს ინстанცია
        if cls._instance is None:
            # თუ არა, შექმნის მას, გადაცემით შექმნის პასუხისმგებლობა მშობელ კლასს (object)
            cls._instance = super().__new__(cls)
        # აბრუნებს არსებული ან ახლად შექმნილ ინстанციას
        return cls._instance

# გამოყენების მაგალითები
s1 = Singleton()
s2 = Singleton()

# ელოდებადი შედეგი: True
print(s1 is s2)

__new__ და __init__ შედარება:

  • __new__:

    • სტატიკური მეთოდი (პირველი არგუმენტი cls).
    • იძახება წინ ინстанციის შექმნის.
    • აბრუნებს შექმნილ ინстанციას.
  • __init__:

    • ინстанციის მეთოდი (პირველი არგუმენტი self).
    • იძახება შემდეგ ინстанციის შექმნის.
    • არ აბრუნებს მნიშვნელობებს (საკუთრივ None).
    • გამოიყენება შექმნილი ობიექტის ატრიბუტების ინიციალიზაციისთვის.