ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ทริป กางเต็นท์ ใกล้กรุงเทพ
โดย milk2533 จ 23 พ.ย. 2020 1:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
12
จ 23 พ.ย. 2020 1:04 pm โดย milk2533
- ให้เขียนประวัติ และ Job description ที่เคยทำมาแต่ละบริษัท โดยระบุประเภทธุรกิจที่เคยทำมา
โดย milk2533 จ 23 พ.ย. 2020 11:26 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
1
13
จ 23 พ.ย. 2020 4:34 pm โดย milk2533
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย milk2533 จ 23 พ.ย. 2020 11:26 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
3
22
จ 23 พ.ย. 2020 7:03 pm โดย milk2533
Work's on Hand กฤตวรรณ อาทิตย์ตั้ง M115
โดย milk2533 จ 23 พ.ย. 2020 11:24 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
0
3
จ 23 พ.ย. 2020 11:24 am โดย milk2533
note ส่วนตัว
โดย milk2533 จ 23 พ.ย. 2020 11:23 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
0
1
จ 23 พ.ย. 2020 11:23 am โดย milk2533
งานประจำวันที่ 23 พฤศจิกายน 2563
โดย milk2533 จ 23 พ.ย. 2020 11:21 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
2
28
จ 23 พ.ย. 2020 7:08 pm โดย milk2533
คำสั่งค้นหาไฟล์ จากขนาดของไฟล์
โดย mindphp จ 23 พ.ย. 2020 12:07 am บอร์ด Linux - Web Server
0
7
จ 23 พ.ย. 2020 12:07 am โดย mindphp
แก้ป้ญหา ภาษาไทย Error ใน Flask template ninja2 Error UnicodeDecodeError UnicodeDecodeError: 'ascii' codec can't decode
โดย mindphp ส 21 พ.ย. 2020 10:38 pm บอร์ด Python Knowledge
1
17
จ 23 พ.ย. 2020 12:22 pm โดย samay123