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

วิธีที่ถูกต้องในการกำหนดตัวแปร Global ที่มีขอบเขตคลาสใน Python

โค้ดตัวอย่างต่อไปนี้แสดงการใช้ตัวแปรกลางในขอบเขตคลาส (Class Attribute)

ตัวอย่าง

class Foo(object):
    bar = 2

foo = Foo()
print(Foo.bar)
print(foo.bar)

# การกำหนด foo.bar จะไม่เปลี่ยน class attribute
# แต่จะสร้าง instance attribute ใหม่
foo.bar = 3
print(Foo.bar)
print(foo.bar)

# เพื่อเปลี่ยน class attribute ต้องเข้าถึงผ่านคลาส
Foo.bar = 4
print(Foo.bar)
print(foo.bar)

ผลลัพธ์

2
2
2
3
4
3

สรุป: ตัวแปรกลางของคลาส (Class Variable) ประกาศนอก __init__ เข้าถึงได้จากทั้งคลาสและอินสแตนซ์ แต่การกำหนดค่าผ่านอินสแตนซ์จะสร้าง Instance Variable ใหม่แทนการเปลี่ยน Class Variable