Sobes.tech
Middle
425

Python тилинде new ыкмасы контекстте эмне кылат?

AIден жооп

sobes.tech 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 кайтарат).
    • Түзүлгөн объекттин мүнөздөмөлөрүн баштоо үчүн колдонулат.