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

การเข้าถึง Attributes และ Methods ใน Python


ในฐานะภาษาโปรแกรมเชิงวัตถุ 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