Class Variables vs Instance Variables
ตัวแปรทั้งหมด นอก ฟังก์ชัน __init__ ใน Python คือ Class Variables ส่วนที่อยู่ ใน __init__ คือ Instance Variables
ความแตกต่างเข้าใจง่ายจากโค้ด:
ตัวอย่าง
class MyClass:
stat_elem = 456 # Class Variable
def __init__(self):
self.object_elem = 789 # Instance Variable
c1 = MyClass()
c2 = MyClass()
# Initial values
print(c1.stat_elem, c1.object_elem) # 456 789
print(c2.stat_elem, c2.object_elem) # 456 789
# เปลี่ยน Class Variable
MyClass.stat_elem = 888
print(c1.stat_elem, c1.object_elem) # 888 789
print(c2.stat_elem, c2.object_elem) # 888 789
# เปลี่ยน Instance Variable ของ c1
c1.object_elem = 777
print(c1.stat_elem, c1.object_elem) # 888 777
print(c2.stat_elem, c2.object_elem) # 888 789
Class Variable แชร์ร่วมกัน Instance Variable แยกต่างหากต่อ Instance