Junior — Middle
Python-ში classmethod და staticmethod როგორ განსხვავდება?
sobes.tech AI
პასუხი AI-სგან
classmethod და staticmethod ორი ტიპის მეთოდია Python-ში, რომლებიც განსხვავდებიან იმით, როგორ იღებენ მათ წვდომას კლასთან და მის მონაცემებთან.
-
@classmethod — მეთოდი, რომელიც პირველ არგუმენტად იღებს თავად კლასს (
cls), არა თუ ნიმუშს. ეს საშუალებას აძლევს მეთოდს მუშაობა კლასთან, მისი მდგომარეობის შეცვლა ან ახალი ნიმუშების შექმნა. -
@staticmethod — მეთოდი, რომელიც ავტომატურად არ იღებს არც ნიმუშს (
self), არც კლასს (cls). ეს ჩვეულებრივი ფუნქციაა, რომელიც ლოგიკურად დაკავშირებულია კლასთან, მაგრამ არ არის დამოკიდებული მის მდგომარეობაზე.
მაგალითი:
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
@staticmethod
def greet(name):
return f"Hello, {name}!"
obj = MyClass()
print(MyClass.get_count()) # აჩვენებს შექმნილი ობიექტების რაოდენობას
print(MyClass.greet('Alice')) # აჩვენებს მისალმებას
საჯამო:
classmethodშეუძლია შეცვალოს ან გამოიყენოს კლასის მდგომარეობა.staticmethodარის უბრალოდ ფუნქცია კლასში, რომელიც არ არის დამოკიდებული კლასზე ან ნიმუშზე.