Class & instance variables
1. Instance Variables (áá áşáááŻááşááąááŻáśá¸)
ááŤá Bro áááşá¸áážáŽá¸ááźáŽá¸ááŹá¸ááŤá __init__ method áá˛áážáŹ self. áá˛áˇ á ááźáŽá¸ ááąá¸áááťážá Instance Variable áá˝áąááťááşá¸áá˛á
áĽáááŹ:
Bro áá˛áˇ Bro áá°áááşááťááşá¸áážáŹ ááŻááşá¸áááŻááşá Ꭰáážááááşá Bro ááŻááşá¸áá˛áˇ Wallpaper ááźáąáŹááşá¸áááŻááşáááş Bro áá°áááşááťááşá¸ááŻááşá¸áážáŹ áááŻááşááźáąáŹááşá¸ááŹá¸? áááźáąáŹááşá¸áá°á¸ááąá áá°áˇááŹáá˛áˇáá° ááŽá¸áááˇáş ááźá áşááąáááŻáˇáá˛á
class Player:
def __init__(self, name, hp):
# self. ááŤááŹáá˝áąá Instance Variables (áá°áˇááąáŹááş áá˛áˇ áá° ááŽá¸áááˇáş)
self.name = name
self.hp = hp
p1 = Player("Mg Mg", 100)
p2 = Player("Aung Aung", 80)
# Mg Mg áá˛áˇ HP ááᯠááťážáąáŹáˇáááŻááşáááş Aung Aung ááᯠááááá°á¸á
p1.hp = 502. Class Variables (áĄááťáŹá¸áááŻááş)
ááŤáááąáŹáˇ áĄáá áşá Class áá˛áˇ áĄááąáŤáşááŻáśá¸ (Method áá˝áąáá˛áˇ áĄááźááşáááş) áážáŹ ááźáąááŹááŹá¸áá˛áˇ Variable áá˝áąáá˛á
áĽáááŹ:
Bro áááŻáˇ áá°áááşááťááşá¸áá áşáááŻááşááŻáśá¸ Yangon United fan áá˝áą áááŻááŤá ááŻáˇá áĄáááşá¸ááŹáááş á áĄáŹá¸ááŻáśá¸áĄáá˝ááş áĄáá°áá°áá˛á áá áşááąáŹááşááąáŹááşá ááŤáááŻáˇáĄáááşá¸ áááŻáˇááźáąáŹáááş áĄáá°áá°áá˛á
Memory:
áá°á ááąááŹáá áşááŻáááşá¸áážáŹáᲠááąááŹáá°áááşá áĄáŹá¸ááŻáśá¸á áĄá˛áˇááąááŹáááŻáᲠáááŻááşá¸áá˝ážááşá¸ (Reference) ááźáááşá
class Player:
# ááŤá Class Variable (áĄáŹá¸ááŻáśá¸áá˛áˇ áááŻááşáááş)
game_server = "Asia-Server"
def __init__(self, name):
self.name = name
# á
á
áşááźááˇáşáááş
p1 = Player("Mg Mg")
p2 = Player("Aung Aung")
print(p1.game_server) # Output: Asia-Server
print(p2.game_server) # Output: Asia-ServerThe Difference (ááŹáá˝áŹáá˛?)
áᎠCode ááąá¸ááᯠáááážááŻá¸á ááťááşá ááᲠáážááşá¸áá˝áŹá¸ááááˇáşáááşá
class Employee:
# Class Variable (Company ááŹáááşá áááşáááşá¸áááŻááşá¸áĄáá˝ááş áá°áá°áá˛)
company_name = "Tech Bros Co., Ltd."
def __init__(self, name, salary):
# Instance Variables (ááŹáááş áá˛áˇ áá
áŹá áá
áşááąáŹááşáá˛áˇáá
áşááąáŹááş ááá°áá°á¸)
self.name = name
self.salary = salary
# áááşáááşá¸ á ááąáŹááş áááşááŽá¸áááş
emp1 = Employee("Kyaw Kyaw", 500000)
emp2 = Employee("Zaw Zaw", 800000)
print("--- áááźááşáááş ---")
print(f"{emp1.name} works at {emp1.company_name}")
print(f"{emp2.name} works at {emp2.company_name}")
# áááŻá¸... Company ááŹáááş ááźáąáŹááşá¸áááŻááşáááş
# Class Variable ááᯠááźááşáááŻááşáááş áĄááŻááşááŻáśá¸ áááŻááşááźáąáŹááşá¸áá˝áŹá¸áááş
Employee.company_name = "Super AI Corp"
print("\n--- ááźááşááźáŽá¸ ---")
print(f"{emp1.name} works at {emp1.company_name}") # ááźáąáŹááşá¸áá˝áŹá¸ááźáŽ
print(f"{emp2.name} works at {emp2.company_name}") # ááŽááąáŹááşáááşá¸ áááŻááşááźáąáŹááşá¸áá˝áŹá¸ááźáŽáĄáážá áşááťáŻááş
| áĄááťááş | Instance Variable (Private) | Class Variable (Shared) |
|---|---|---|
| ááąáᏠ| __init__ áá˛áážáŹ self. áá˛áˇ ááąá¸áááşá | Class áĄáąáŹááş (Method áĄááźááş) áážáŹááąá¸áááşá |
| áááŻááşáážááş | Object áá áşááŻááťááşá¸á áŽá áááŻááşáááşá | Class ááźáŽá¸áá áşááŻááŻáśá¸á áááŻááşáááşá |
| áĄááŻáśá¸ááźáŻááŻáś | áá áşááąáŹááşááťááşá¸á áŽáá˛áˇ Data (Name, Age, ID) | áĄáŹá¸ááŻáśá¸áá°áá°ááŻáśá¸áááˇáş Data (Config, Constants, Counters) |
| Effect | áá áşááąáŹááşá Ꮰááźááşáááş ááťááşáá˛áˇáá° ááááá°á¸á | Class áááą ááźááşáááŻááşáááş áĄááŻááşááŻáśá¸ áááŻááşááźáąáŹááşá¸áááşá |
ááąáŹááşááťáąáŹááş
emp1.company_name = "Evil Corp" áááŻááźáŽá¸ Object áááąááááˇáş Class Variable ááᯠáá˝áŹá¸ááźááşáááş ááŹááźá áşááᲠááááŹá¸?
á፠áááşá¸áááşá¸áážáŻááşáááşá ááŤááąáááˇáş Class Variable ááᯠááźááşááťááşáááş Class Name áá˛áˇ áá˛ááąáŤáşááźááşáᏠáĄááąáŹááşá¸ááŻáśá¸ áááŻáˇ áážááşááŹá¸áááş áááźáŽá
ááááŻáśá¸
- Instance Variables: Object áá áşááŻááťááşá¸á áŽáĄáá˝ááş ááŽá¸áááˇáşá self. áá˛áˇ ááąá¸áááşá
- Class Variables: Class áááą áá˝áąá¸ááŹáááťáž Object áááŻááşá¸ Share ááŻáśá¸áááşá Class áĄáąáŹááşáážáŹ ááąá¸áááşá
- Best Practice: Class Variable ááᯠááźááşááťááşáááş ClassName.variable_name áá˛áˇ áá˛ááźááşá