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 — класс менен иштеген метод.