วัตถุประสงค์ของself
คำใน Python คืออะไร? ฉันเข้าใจว่ามันหมายถึงวัตถุเฉพาะที่สร้างขึ้นจากคลาสนั้น แต่ฉันไม่สามารถดูได้ว่าทำไมจึงต้องเพิ่มอย่างชัดเจนในทุกฟังก์ชั่นเป็นพารามิเตอร์ เพื่อแสดงใน Ruby ฉันสามารถทำสิ่งนี้:
class myClass
def myFunc(name)
@name = name
end
end
ซึ่งฉันเข้าใจค่อนข้างง่าย อย่างไรก็ตามใน Python ฉันต้องรวมself
:
class myClass:
def myFunc(self, name):
self.name = name
ทุกคนสามารถพูดคุยกับฉันผ่านสิ่งนี้ได้ไหม? มันไม่ใช่สิ่งที่ฉันได้เจอในประสบการณ์ของฉัน
@name
ใช้งานง่ายกว่าself.name
? IMO หลังนั้นใช้งานง่ายกว่า
@foo
และself.foo
มีความชัดเจนเท่ากันเนื่องจากไม่ต้องมีการแก้ปัญหาโดยปริยาย (เช่นใน C ++ สมาชิกอินสแตนซ์สามารถเข้าถึงได้ "โดยนัย" โดยไม่มี "ชัดเจน" โดยใช้เนมสเปซ) ข้อแตกต่างคือทับทิมแนะนำ semantic ใหม่ (@) ในขณะที่ Python ไม่ได้ หรือไม่ความหมายใหม่มีมูลค่าจำนวน verbosity หลีกเลี่ยงเป็นอัตนัย แม้ว่ามันควรจะสังเกตว่าภาษาสมัยใหม่ส่วนใหญ่เลือกที่จะแนะนำแนวคิดที่นี่ (เช่น php's $ this, JS's this)