ในฐานะภาษาโปรแกรมเชิงวัตถุ Python เน้นที่ออบเจ็กต์ คลาสเป็นแผนผังที่สร้างออบเจ็กต์ แต่ละคลาสใน Python สามารถมีแอตทริบิวต์มากมาย รวมถึงฟังก์ชันเป็นแอตทริบิวต์
การเข้าถึงแอตทริบิวต์ของคลาส
เพื่อตรวจสอบแอตทริบิวต์ของคลาสและจัดการแอตทริบิวต์เหล่านั้น เราใช้เมธอดในตัวของ Python มากมายดังนี้
getattr() - เมธอด Python ใช้เข้าถึงแอตทริบิวต์ของคลาส
hasattr() - เมธอด Python ใช้ตรวจสอบการมีอยู่ของแอตทริบิวต์ในคลาส
setattr() - เมธอด Python ใช้ตั้งค่าแอตทริบิวต์เพิ่มเติมในคลาส
โปรแกรมด้านล่างแสดงการใช้เมธอดข้างต้นเพื่อเข้าถึงแอตทริบิวต์ของคลาสใน Python
ตัวอย่างโค้ด
class StateInfo:
StateName = 'Telangana'
population = '3.5 crore'
def func1(self):
print("Hello from my function")
print(getattr(StateInfo, 'StateName')) # คืนค่า True หากออบเจ็กต์มีแอตทริบิวต์
print(hasattr(StateInfo, 'population'))
setattr(StateInfo, 'ForestCover', 39)
print(getattr(StateInfo, 'ForestCover'))
print(hasattr(StateInfo, 'func1'))
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ -
Telangana True 39 True
การเข้าถึงเมธอดของคลาส
เพื่อเข้าถึงเมธอดของคลาส เราต้องสร้างอินสแตนซ์ของคลาสเป็นออบเจ็กต์ จากนั้นเราสามารถเข้าถึงเมธอดเป็น instance method ของคลาสได้ ตามโปรแกรมด้านล่าง ที่นี่ผ่านพารามิเตอร์ self เมธอดอินสแตนซ์สามารถเข้าถึงแอตทริบิวต์และเมธอดอื่นๆ บนออบเจ็กต์เดียวกันได้
ตัวอย่างโค้ด
class StateInfo:
StateName = 'Telangana'
population = '3.5 crore'
def func1(self):
print("Hello from my function")
print(getattr(StateInfo, 'StateName'))
print(hasattr(StateInfo, 'population'))
setattr(StateInfo, 'ForestCover', 39)
print(getattr(StateInfo, 'ForestCover'))
print(hasattr(StateInfo, 'func1'))
obj = StateInfo()
obj.func1()
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ -
Telangana True 39 True Hello from my function
การเข้าถึงเมธอดของคลาสหนึ่งจากอีกคลาสหนึ่ง
เพื่อเข้าถึงเมธอดของคลาสหนึ่งจากอีกคลาสหนึ่ง เราต้องส่งอินสแตนซ์ของคลาสที่ถูกเรียกไปยังคลาสที่เรียก ตัวอย่างด้านล่างแสดงวิธีการทำ
ตัวอย่างโค้ด
class ClassOne:
def m_class1(self):
print("Method in class 1")
# กำหนดคลาสที่เรียก
class ClassTwo(object):
def __init__(self, c1):
self.c1 = c1
# เมธอดที่เรียก
def m_class2(self):
Object_inst = self.c1()
Object_inst.m_class1()
# ส่งออบเจ็กต์ classone เป็นอาร์กิวเมนต์ให้ classTwo
obj = ClassTwo(ClassOne)
obj.m_class2()
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ -
Method in class 1