Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Class / Static Variables ใน Python

ตัวแปรที่ประกาศภายในคลาสแต่นอกเมธอด เรียกว่า Class Variable (หรือ Static Variable) แชร์ระหว่างทุก Instance ของคลาสนั้น

ตัวอย่างพื้นฐาน

class Fruits:
    count = 0  # Class variable
    
    def __init__(self, name, count):
        self.name = name
        self.count = count  # Instance variable (ชื่อซ้ำแต่คนละตัว!)
        Fruits.count += count  # เข้าถึง class variable ผ่านชื่อคลาส

apples = Fruits("apples", 3)
pears = Fruits("pears", 4)

print(apples.count)        # 3 (instance)
print(pears.count)         # 4 (instance)
print(Fruits.count)        # 7 (class)
print(apples.__class__.count)  # 7
print(type(pears).count)       # 7

Class Variable vs Instance Variable ชื่อเดียวกัน

class Example:
    static_var = 9

# เข้าถึงผ่านคลาส
print(Example.static_var)  # 9

# เข้าถึงผ่านอินสแตนซ์ (อ่านได้)
inst = Example()
print(inst.static_var)     # 9

# "เปลี่ยน" ผ่านอินสแตนซ์ → สร้าง instance variable ใหม่!
inst.static_var = 12
print(inst.static_var)     # 12 (instance variable)
print(Example.static_var)  # 9 (class variable ไม่เปลี่ยน!)

จุดสำคัญ

  • Class Variable แชร์ร่วมกันทุก Instance
  • การกำหนด instance.var = x จะสร้าง Instance Variable ใหม่ที่ "บัง" (shadow) Class Variable
  • ใช้ ClassName.var เพื่ออ่าน/เขียน Class Variable จริง
  • ใช้ instance.__class__.var หรือ type(instance).var เข้าถึงผ่านอินสแตนซ์ก็ได้