ในภาษา 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
SQL JOIN: การรวมข้อมูลจากหลายตารางในฐานข้อมูล
โดย witsarutt000 พฤ 14 มี.ค. 2024 4:07 pm บอร์ด SQL Knowledge
1
166
พฤ 14 มี.ค. 2024 5:44 pm โดย Sirayu View Topic SQL JOIN: การรวมข้อมูลจากหลายตารางในฐานข้อมูล
PHP การเปลี่ยนแปลงที่สร้างปรากฏการณ์ในโลกของเว็บ
โดย witsarutt000 พฤ 14 มี.ค. 2024 11:17 am บอร์ด PHP Knowledge
0
125
พฤ 14 มี.ค. 2024 11:17 am โดย witsarutt000 View Topic PHP การเปลี่ยนแปลงที่สร้างปรากฏการณ์ในโลกของเว็บ
ปัญหา Harddisk ขึ้น 100% เวลาเซฟไฟล์ หรือภาพ จะค้่างที่หน้าแท๊บ Expolorer
โดย Thanavat_n พ 13 มี.ค. 2024 11:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
5
270
พ 13 มี.ค. 2024 1:34 pm โดย Thanavat_n View Topic ปัญหา Harddisk ขึ้น 100% เวลาเซฟไฟล์ หรือภาพ จะค้่างที่หน้าแท๊บ Expolorer
ตู้รองเท้า ไอเท็มวิเศษช่วยจัดระเบียบคอลเลกชันรองเท้าคู่โปรด
โดย @Foretoday อ 12 มี.ค. 2024 1:46 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
184
อ 12 มี.ค. 2024 1:46 pm โดย @Foretoday View Topic ตู้รองเท้า ไอเท็มวิเศษช่วยจัดระเบียบคอลเลกชันรองเท้าคู่โปรด
แนะนำสถานที่น่าเที่ยวในจังหวัดชุมพรพร้อมวิธีการเดินทาง
โดย witsarutt000 จ 11 มี.ค. 2024 6:14 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
142
จ 11 มี.ค. 2024 6:14 pm โดย witsarutt000 View Topic แนะนำสถานที่น่าเที่ยวในจังหวัดชุมพรพร้อมวิธีการเดินทาง
ย้าย VM ข้าม Host ด้วย scp กรณีศึกษา Vmware ESXI
โดย mindphp อ 10 มี.ค. 2024 4:36 am บอร์ด Linux - Web Server
0
239
อ 10 มี.ค. 2024 4:36 am โดย mindphp View Topic ย้าย VM ข้าม Host ด้วย scp กรณีศึกษา Vmware ESXI
IP และ vpn (VMware)
โดย ballmykids อ 10 มี.ค. 2024 2:35 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
203
จ 11 มี.ค. 2024 3:19 pm โดย ballmykids View Topic IP และ vpn (VMware)
แบบนี้ต้องทำยังไง ในกรณีที่ Server เดิมเราได้ทำการ Raid 1 กับ HDD 2 ลูกแรกแล้ว
โดย Anonymous ศ 08 มี.ค. 2024 7:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
166
ศ 08 มี.ค. 2024 8:12 pm โดย mindphp View Topic แบบนี้ต้องทำยังไง ในกรณีที่ Server เดิมเราได้ทำการ Raid 1 กับ HDD 2 ลูกแรกแล้ว