# क्लास और स्टैटिक मेथड — पायथन

Source: https://www.geekswithgeeks.com/hi/python/py-class-static-methods

> वे मेथड जो किसी विशेष इंस्टेंस के नहीं, बल्कि क्लास के होते हैं।

## @classmethod बनाम @staticmethod

`@classmethod` इंस्टेंस की जगह क्लास (`cls`) प्राप्त करता है — अक्सर वैकल्पिक कंस्ट्रक्टर के लिए उपयोग होता है। `@staticmethod` न इंस्टेंस, न क्लास लेता है, बस क्लास के अंदर समूहित एक फ़ंक्शन है।

```python
class Pizza:
    def __init__(self, toppings):
        self.toppings = toppings

    @classmethod
    def margherita(cls):
        return cls(["mozzarella", "basil"])

    @staticmethod
    def is_valid_topping(name):
        return isinstance(name, str) and len(name) > 0

p = Pizza.margherita()
print(p.toppings)
print(Pizza.is_valid_topping("basil"))
```

**Quiz:** कौन-सा decorator किसी मेथड को बिना मौजूदा ऑब्जेक्ट के नया इंस्टेंस बनाने देता है?

- [ ] @staticmethod
- [x] @classmethod
- [ ] @property

*Answer:* @classmethod. @classmethod खुद क्लास (cls) प्राप्त करता है और नया इंस्टेंस बना कर लौटा सकता है।
