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). - გამოიყენება შექმნილი ობიექტის ატრიბუტების ინიციალიზაციისთვის.
- ინстанციის მეთოდი (პირველი არგუმენტი