Sobes.tech
Middle

Python dilinde bağlamda new yöntemi ne yapar?

sobes.tech yapay zeka

AI'dan gelen yanıt

__new__ - sınıfın yeni bir örneğini oluşturmaktan sorumlu olan sınıf metodudur. __init__'den önce çağrılır ve hangi nesnenin döndürüleceğini belirler. Genellikle benzersiz nesneler (Singleton) veya değiştirilemez türde nesneler (tuple veya str gibi) oluşturmak için kullanılır.

class Singleton:
    _instance = None

    def __new__(cls):
        # Zaten bir örneğin olup olmadığını kontrol et
        if cls._instance is None:
            # Yoksa, ana sınıfa (object) devrederek oluştur
            cls._instance = super().__new__(cls)
        # Var olan veya yeni oluşturulan örneği döndür
        return cls._instance

# Kullanım örnekleri
s1 = Singleton()
s2 = Singleton()

# Beklenen sonuç: True
print(s1 is s2)

__new__ ve __init__ karşılaştırması:

  • __new__:

    • Statik yöntemdir (ilk argüman cls).
    • Nesne oluşturulmadan önce çağrılır.
    • Oluşturulan nesneyi döndürür.
  • __init__:

    • Nesne yöntemi (ilk argüman self).
    • Nesne oluşturulduktan sonra çağrılır.
    • Değer döndürmez (örtülü olarak None döner).
    • Oluşturulan nesnenin özniteliklerini başlatmak için kullanılır.