Sobes.tech
Junior — Middle

Pythonда static жана class деп жарыяланган ыкмаларды колдонуу кандай айырмаланат?

sobes.tech AI

AIден жооп

Pythonда, @staticmethod жана @classmethod деп жарыяланган методтор, класс жана үлгү маалыматтарына кирүү жолунда айырмаланат:

  • @staticmethod — автоматтык түрдө үлгү (self) же класс (cls) шилтемесин албайт. Ал жөнөкөй функциядай иштейт, бирок логикалык топтоо үчүн класс ичинде жайгашкан. Ал класс же үлгүнүн абалын өзгөртө албайт.

  • @classmethod — биринчи аргумент катары өзү классты (cls) алат, үлгү эмес. Ал класс мүчөлөрү менен иштүүгө, альтернативдүү куруучуларды түзүүгө жана класс абалын өзгөртүүгө мүмкүндүк берет.

Мисал:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Салам!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Чыгарышы: Салам!
MyClass.increment_count()
print(MyClass.count)     # Чыгарышы: 1

Ошентип, staticmethod — бул класс ичинде жайгашкан жөнөкөй функция, ал эми classmethod — класс менен иштеген метод.