Sobes.tech
Middle

Ի՞նչ է անում new մեթոդը Python լեզվի կոնտեքստում։

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)։
    • Օգտագործվում է ստեղծված օբյեկտի հատկությունները սկզբնավորելու համար։