ในภาษา Python (ไพทอน) ข้อมูลที่เรารับจากภายนอกเพื่อนำมาใช้งานภายในคลาส แบ่งความจำเป็นได้ดังนี้ ข้อมูลที่ใช้งานเฉพาะในบางเมธอด ในลักษณะนี้เราอาจรับข้อมูลเข้ามาในรูปแบบพารามิเตอร์ของเมธอดนั้นๆ หรือ ข้อมูลที่จำเป็นต่อการทำงานในเบื้องต้นของคลาส เราควรรับเข้ามาในขั้นตอนการสร้างอินสแตนซ์ และข้อมูลดังกล่าว อาจต้องนำไปใช้ในเมธอดต่างๆ ดังนั้น เราจำเป็นต้องมีตัวแปรสำหรับการเก็บค่าไว้ ซึ่งเราเรียกตัวแปรนี้ว่า Attribute (แอตทริบิวต์) ซึ่งในบทความนี้เราจะมาพูดถึงการรับข้อมูลแล้วกำหนดเป็นแอตทริบิวต์ ในภาษาไพทอนกัน

Instance Attribute

 

     Instance Attribute เป็นการจัดเก็บข้อมูลเฉพาะตัวของอินสแตนซ์อันใดอันหนึ่ง โดยเราจะรับจากภายนอกเข้ามาในขั้นตอนการสร้างอินสแตนซ์ของคลาส โดย Instance Attribute จะนำเข้ามาในคลาสด้วยรูปแบบพารามิเตอร์ของเมธอดชนิดพิเศษ ที่เราเรียกว่า Initializer หรือที่เราเรียกสั้นๆ ว่า init โดยในภาษาไพทอนจะต้องกำหนดรูปแบบดังนี้

def __init__(self, Parameter)

     def เป็นการบอกว่าเป็นเมธอดของคลาส __init__ เป็นชื่อเมธอดชนิดพิเศษ ซึ่งจะใช้ชื่ออื่นไม่ได้ self เป็นพารามิเตอร์บังคับเพื่อใช้อ้างถึงแอตทริบิวต์ที่จะสร้างขึ้น Parameter เป็นข้อมูลที่จะรับเข้ามาในคลาส มีกี่จำนวนก็ได้ ขึ้นอยู่กับว่าเราจำเป็นต้องใช้ข้อมูลใดบ้าง โดยภายใน init หลักๆที่ต้องมีก็คือ การนำพารามิเตอร์ที่รับเข้ามา ไปสร้างเป็นแอตทริบิวต์ โดยชื่อแอตทริบิวต์ ก็คือตัวแปรนั่นเอง ซึ่งเราจะกำหนดเป็นชื่อเดียวกับพารามิเตอร์ที่จับคู่กัน หรือเป็นคนละชื่อก็ได้

self.atrribute name = parameter

ตัวอย่างการใช้งาน

class circle:
    def __init__(self,radius):
        self.radius = radius    #สร้างแอตทริบิวต์ชื่อ radius และนำค่าพารามิเตอร์มากำหนดให้

    def area(self):
        return 3.14 * (self.radius ** 2) #อ้างถึงแอตทริบิวต์ที่สร้าง
    def perimeter(self):
        return 2 * 3.14 * self.radius

c = circle(10)  #กำหนดค่า radius
c.radius = 20   #แก้ไขค่าให้ radius 
a = c.area()
p = c.perimeter()

print(a)
print(p)

      จะเห็นได้ว่าข้อมูลของคลาสหรือแอตทริบิวต์ จะถูกกำหนดขึ้นในขั้นตอนการสร้างอินสแตนซ์ของคลาส และการอ้างถึงจากภายนอกคลาสก็ต้องทำผ่านอินสแตนซ์ เช่น c.radius = 20

ผลลัพธ์

ผลลัพธ์การอ้างถึงจากภายนอกคลาส ผ่านอินสแตนซ์
ผลลัพธ์การอ้างถึงจากภายนอก

     นอกจากนี้หากเราสร้างหลายๆ อินสแตนซ์จากคลาสเดียวกัน ค่าของแอตทริบิวต์ก็จะแยกจากกันเป็นของอินสแตนซ์แต่ละอัน เช่น 

c1 = circle(10)
c2 = circle(20)
print(c1.radius)
print(c2.radius)

c1 = circle(15)
print(c1.radius)

ผลลัพธ์

ผลลัพธ์การสร้างหลายอินสแตนซ์ จากคลาสเดียวกัน
ผลลัพธ์การสร้างหลายอินสแตนซ์

     จากผลลัพธ์ที่ออกมานั้น เราจะเห็นได้ว่าค่าของแอตทริบิวต์จะแยกจากกันเป็นของแต่ละอัน โดยไม่ขึ้นระหว่างกันแม้จะมีตัวแปรที่เหมือนกันก็ตาม เราจึงเรียกแอตทริบิวต์ชนิดนี้ว่า Instance Attribute หรือ การจัดเก็บข้อมูลเฉพาะตัวของอินสแตนซ์อันใดอันหนึ่ง นั่นเอง

 

 

ช่องทางการศึกษาเพิ่มเติมเกี่ยวกับ : Python

Instance Method การเรียกใช้งานเมธอดผ่านอินสแตนซ์

การเรียกใช้ฟังก์ชันแบบ Recursion ในไพทอน ฟังชันก์ทำงานซ้ำเรียกตัวเอง

การสร้างฟังก์ชั่น ในไพทอน Python Defining function

การสร้างฟังก์ชั่น ในไพทอน Python function Variable-length arguments

การสร้างฟังก์ชั่น ในไพทอน Python Defining function โดยมี Keyword Arguments

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:07 am บอร์ด Python Knowledge
3
656
ศ 29 มี.ค. 2024 9:18 am โดย athirach.offcial View Topic คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
การใช้งานเมทอด zip() ใน Python: รวมข้อมูลจาก objects หลายๆ อันเข้าด้วยกันเป็น tuple อธิบายและตัวอย่าง
โดย athirach.offcial พฤ 28 มี.ค. 2024 10:51 am บอร์ด Python Knowledge
1
182
พฤ 28 มี.ค. 2024 8:55 pm โดย athirach.offcial View Topic การใช้งานเมทอด zip() ใน Python: รวมข้อมูลจาก objects หลายๆ อันเข้าด้วยกันเป็น tuple อธิบายและตัวอย่าง
ปิดโหมดข้อความธรรมดาในอีเมลแล้ว แต่เครื่องมือไม่ขึ้น ต้องตั้งค่ายังไง
โดย Narisara พฤ 28 มี.ค. 2024 10:46 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
139
พฤ 28 มี.ค. 2024 11:13 am โดย Narisara View Topic ปิดโหมดข้อความธรรมดาในอีเมลแล้ว แต่เครื่องมือไม่ขึ้น ต้องตั้งค่ายังไง
ตัวแปร List ใน Python เหมาะสำหรับงานแบบไหน
โดย athirach.offcial พ 27 มี.ค. 2024 11:34 am บอร์ด Python Knowledge
0
115
พ 27 มี.ค. 2024 11:34 am โดย athirach.offcial View Topic ตัวแปร List ใน Python เหมาะสำหรับงานแบบไหน
data science คืออะไร ? มีหน้าที่อะไร
โดย athirach.offcial พ 27 มี.ค. 2024 11:24 am บอร์ด Python Knowledge
0
113
พ 27 มี.ค. 2024 11:24 am โดย athirach.offcial View Topic data science คืออะไร ? มีหน้าที่อะไร
ไลบรารี SciPy การใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์
โดย athirach.offcial พ 27 มี.ค. 2024 11:14 am บอร์ด Python Knowledge
0
98
พ 27 มี.ค. 2024 11:14 am โดย athirach.offcial View Topic ไลบรารี SciPy การใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์
เชื่อมต่อ WordPress กับฐานข้อมูล วิธีเชื่อมต่อฐานข้อมูลง่ายๆ
โดย athirach.offcial พ 27 มี.ค. 2024 11:03 am บอร์ด Wordpress Developing Knowledge
0
70
พ 27 มี.ค. 2024 11:03 am โดย athirach.offcial View Topic เชื่อมต่อ WordPress กับฐานข้อมูล วิธีเชื่อมต่อฐานข้อมูลง่ายๆ
SQL - Trigger คืออะไร? มีประโยชน์อย่างไรในการทำงาน
โดย athirach.offcial พ 27 มี.ค. 2024 10:54 am บอร์ด SQL Knowledge
1
341
พ 27 มี.ค. 2024 5:49 pm โดย athirach.offcial View Topic SQL - Trigger คืออะไร? มีประโยชน์อย่างไรในการทำงาน