มาทำความรู้จักกับ self ใน Python กัน

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

tatiya
PHP Super Member
PHP Super Member
โพสต์: 333
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

มาทำความรู้จักกับ self ใน Python กัน

โพสต์โดย tatiya » 15/08/2018 3:26 pm

self หรือ keyword self ถ้าเรามองในภาษา JAVA มันก็คือ keyword this นั้นเอง หรือก็คือเราใช้ตัวนี้เพื่ออ้างอิง สมมติเราทำงานสร้าง object ขึ้นมา 1 ตัว แล้วเลือกใช้ method ตัวนึ่ง ชึ่งนี่คือการใช้งาน self เพราะจะได้รู้ว่า object ตัวนี้กำลังเรียกใช้ method ตัวไหนอยู่ ผมจะยกตัวอย่างเพื่อไม่ให้ งง นะครับ

ผมจะสร้าง class test ขึ้นมา

โค้ด: เลือกทั้งหมด

class test():
    def exaple1(self,name,lastname):
        self.name = name
        self.lastname = lastname
    def show(self):
        print("your name : %s" %self.name)
        print("your Lastname : %s " %self.lastname)
obj1 = test()
obj2 = test()
obj1.exaple1("MDsort","Mindphp")
obj2.exaple1("tatiya","nachai")
obj1.show()
obj2.show()


อธิบายทีล่ะบรรทัดนะครับ
บรรทัดที่1 ผมสร้าง คลาส test ขึ้นมา
บรรทัดที่2 สร้าง method หรือที่เรียกในที่นี้ว่า ฟังก์ชั่น exaple1 ขึ้นมา และ สร้าง self ขึ้นมาเพื่ออ้างอิง สมมติว่าเราสร้าง object มา 10 แล้วเราเลือกใช้ฟังก์ชั่นนี้ ตัวนี้คือตัวอ้างอิงว่าเรากำลังเรียกใช้ ฟังก์ชั่นนี้อยู่ และ name กับ lastname คือการสร้างแอตติบิว ขึ้นมาเพื่อรับค่ามาจาก object หรือที่อื่นๆ
บรรทัดที่3 กำหนดค่าเร่มต้นของ แอตติบิว name
บรรทัดที่4 กำหนดค่าเร่มต้นของ แอตติบิว lastname
บรรทัดที่5 สร้างฟังก์ชั่นขึ้นมาอีกตัวชื่อ show อันนี้สร้างมาเพื่อไว้โชว์ข้อมูลที่ได้รับมาจาก objectที่เราจะสร้าง
บรรทัดที่6 สั่งให้ print self.name
บรรทัดที่7 สั่งให้ print self.lastname
บรรทัดที่8 สร้างอ็อปเจค obj1 เรียกใช้งาน class test
บรรทัดที่9 สร้างอ็อปเจค obj2 เรียกใช้งาน class test
บรรทัดที่10 obj1 เรียกใช้งานฟังก์ชั่น exaple1 และส่งค่า สติงเข้าไปใน แอตติบิว name และ lastname ตามลำดับ
บรรทัดที่11 obj2 เรียกใช้งานฟังก์ชั่น exaple1 และส่งค่า สติงเข้าไปใน แอตติบิว name และ lastname ตามลำดับ
บรรทัดที่12 obj1 เรียกใช้งานฟังก์ชั่น show()
บรรทัดที่13 obj2 เรียกใช้งานฟังก์ชั่น show()

ผลลัพท์
your name : MDsort
your Lastname : Mindphp
your name : tatiya
your Lastname : nachai

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 7 และ บุคคลทั่วไป 0 ท่าน