Class & static methods
Python áážáŹ Method ááŻáśá¸ááťááŻá¸ áážááááş
Class áá˝áą ááąáŹááşáá˛áˇáĄá፠Method (Function) ááŻáśá¸ááťááŻá¸ ááąá¸áááŻáˇááááşá áá áşááŻááťááşá¸á áŽáážáŹ áá°áˇáá˛áˇ áĄááŻááşáá˛áˇ áá°áˇáá˛áˇ ááŻáśá¸ááŻáś ááá°ááźáá°á¸á
- Instance Methods: Object áá áşááŻááťááşá¸á áŽáá˛áˇ data áá˝áąááᯠááŻáśá¸áááş
- Class Methods: Class áá áşááŻááŻáśá¸áá˛áˇ áááŻááşáá˛áˇ áĄááŻááşáá˝áą ááŻááşáááş
- Static Methods: Class data áá˝áą áááŻáśá¸áá˛áˇ utility functions áá˝áą
1. Instance Methods
ááŤá Bro ááááźáŽá¸ááŹá¸á Function ááąá¸áááŻááşáááŻááşá¸ áááááŻáśá¸ parameter áážáŹ self áááˇáşáááŻááşáááş áĄá˛áˇá፠Instance Method áá˛á
ááąáŹáˇááťááş: self ááŤááááşá
2. Class Methods (The Manager)
áá°á Object áá áşááŻááťááşá¸á áŽááᯠá áááşááááşá áŹá¸áá°á¸á Class ááźáŽá¸ áá áşááŻááŻáśá¸ áá˛áˇáááŻááşáá˛áˇ áĄááŻááşáá˝áąááᯠááŻááşáááşá
Syntax:
- ááąáŤááşá¸ááąáŤáşáážáŹ @classmethod áááŻáá˛áˇ ááśááááş (Decorator) áááşááąá¸ááááşá
- Parameter áážáŹ self áĄá áŹá¸ cls (Class) ááᯠááŻáśá¸ááááşá
áĄááŻáśá¸áááşááŻáś:
áĄááťáŹá¸áĄáŹá¸ááźááˇáş Alternative Constructor (Factory Method) áĄááąáá˛áˇ ááŻáśá¸ááźáááşá áááŻáááŻááŹá Object ááąáŹááşáá˛áˇáĄá፠áááşá¸áááşá¸áĄáá áşáá˛áˇ ááąáŹááşááťááşáááş ááŻáśá¸ááŹá
áĽááᏠ- Pizza áááŻááş
áááŻá¸áááŻá¸ Pizza áážáŹ toppings áá˝áą áááŻááşáááˇáşáááŻáˇáááááŻá Margherita áááŻááŹáá˛áˇ áᏠtoppings ááŤááźáŽá¸ááŹá¸áááŻááźáŽá¸ áááşá¸áážáŹáááŻáˇ ááááşáááŹá¸á áĄá˛áˇáᎠMargherita áááŻááźáŽá¸ áĄáááˇáşááŻááşááąá¸áááŻááşááŹá Class Method ááąáŤáˇá
class Pizza:
def __init__(self, ingredients):
self.ingredients = ingredients
def __repr__(self):
return f"Pizza with {self.ingredients}"
# ááŤá Class Method (Factory áááŻááťááŻá¸ ááŻáśá¸áá˝áŹá¸ááŹ)
@classmethod
def margherita(cls):
# cls(...) áááŻáᏠPizza(...) áá˛áˇ áĄáá°áá°áá˛
return cls(['mozzarella', 'tomatoes'])
@classmethod
def prosciutto(cls):
return cls(['mozzarella', 'tomatoes', 'ham'])
# ááŻáśá¸ááźááˇáşáááş
my_pizza = Pizza(['cheese', 'chicken']) # áááŻá¸áááŻá¸ Instance method (init)
cheese_pizza = Pizza.margherita() # Class method áá˛áˇ áážááşá¸áážáŹáááŻááşááŹ
print(cheese_pizza) # Output: Pizza with ['mozzarella', 'tomatoes']3. Static Methods (The Helper)
áá°á áááŻááŽáááŻáááŻááşááąáŹááşá Class áá˛áážáŹááąáŹáˇ ááąáááşá ááŤááąáááˇáş Class (cls) áá˛áˇáááşá¸ ááááŻááşáá°á¸á Instance (self) áá˛áˇáááşá¸ ááááŻááşáá°á¸á
Syntax:
- ááąáŤááşá¸ááąáŤáşáážáŹ @staticmethod áááşááááşá
- self ááąáŹ cls ááąáŹ ááŹááž áááŤáá°á¸á áááŻá¸áááŻá¸ function áĄáááŻááşá¸áá˛á
áĄááŻáśá¸áááşááŻáś:
Utility function áá˝áą (áĽááᏠ- ááąáŤááşá¸áážáŻááşááźážáąáŹááşá áŹá¸ ááŻááşááŹá á áŹááźáąáŹááşá¸á á áşááŹ) áĄáá˝ááş ááŻáśá¸áááşá
áĽááᏠ- Calculator
class MathHelper:
@staticmethod
def add(x, y):
return x + y
@staticmethod
def is_even(num):
return num % 2 == 0
# Object ááąáŹááş ááąáŹááşá
áᏠááááŻáá°á¸á áááşá¸ááąáŤáşááŻáśá¸áááŻáˇááááş
print(MathHelper.add(5, 10)) # Output: 15
print(MathHelper.is_even(8)) # Output: TrueThe Battle: áááşááąáŹááş áááşááťáááşááŻáśá¸
| áĄááťááŻá¸áĄá áŹá¸ | Parameter | Decorator | áááşáĄááťáááşááŻáśá¸ááá˛? |
|---|---|---|---|
| Instance Method | self | áááᯠ| Object áá áşááŻááťááşá¸á áŽáá˛áˇ self.name, self.age áá˝áąááᯠááŻáśá¸ááťááşáááş/ááźááşááťááşáááş ááŻáśá¸á 90% ááŤáᲠááŻáśá¸ááážáŹá |
| Class Method | cls | @classmethod | Class Variable áá˝áąááᯠááźááşááťááşáááş ááŻáśá¸á áááŻááşáááşá¸ Object ááąáŹááşáááŻáˇ áááşá¸áááşá¸áĄáá áş (Factory) áááşááŽá¸ááťááşáááş ááŻáśá¸á |
| Static Method | áá፠| @staticmethod | Class áá˛á data áá˝áąááᯠááŻáśá¸á ááááá˛á ááŽá¸áááˇáş áá˝ááşááťááşáážáŻ (Utility) ááŻááşááťááşáááş ááŻáśá¸á |
Bro áážááşááŹá¸ááááˇáş Logic
- self áááŻááŹ: á፠(Object áá áşááŻááťááşá¸á áŽ)á
- cls áááŻááŹ: ááŤáááŻáˇááťááŻá¸áá˝ááş (Class ááźáŽá¸áá áşááŻááŻáśá¸)á
- Static áááŻááŹ: ááźááşááá° (Class áá˛áážáŹ ááąááąáááˇáş ááŹááž áááşáá á˝ááşáááşáá°)á
ááááŻáśá¸
áᎠclassmethod áá˛áˇ staticmethod ááᯠáááŻááşáá˝áŹá¸ááźáŽáááŻáááş Bro áá˛áˇ Code áá˝áąá áááŻááźáŽá¸ Clean ááźá áşáá˝áŹá¸ááááˇáşáááşá áááźáŹá¸ Developer áá˝áąá Bro ááŻááşááᯠáááşáá˛áˇáĄá፠ááŹ... ááŽááąáŹááş Decorators áá˝áąááŹáá˝áąáá˛áˇ ááąá¸áááşáááşá ááťá˝ááşá¸áá˛áᲠáááŻááźáŽá¸ ááźá áşáá˝áŹá¸áážáŹ!
- Instance Methods: áĄááŻáśá¸áĄááťáŹá¸ááŻáśá¸á self áá˛áˇ ááŻáśá¸áááşá Object data ááᯠáĄááŻááşááŻááşáááş
- Class Methods: @classmethod decorator áá˛áˇ ááŻáśá¸áááşá cls parameter áá°áááşá Factory pattern áĄáá˝ááş ááŻáśá¸áááş
- Static Methods: @staticmethod decorator áá˛áˇ ááŻáśá¸áááşá self/cls ááááŻáá°á¸á Utility functions áĄáá˝ááş ááŻáśá¸áááş