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