Apa tujuan dari self
kata dalam Python? Saya mengerti itu merujuk ke objek spesifik yang dibuat dari kelas itu, tapi saya tidak bisa melihat mengapa itu secara eksplisit perlu ditambahkan ke setiap fungsi sebagai parameter. Sebagai ilustrasi, di Ruby saya bisa melakukan ini:
class myClass
def myFunc(name)
@name = name
end
end
Yang saya mengerti, cukup mudah. Namun dalam Python saya harus memasukkan self
:
class myClass:
def myFunc(self, name):
self.name = name
Adakah yang bisa membicarakan ini dengan saya? Itu bukan sesuatu yang saya temui dalam pengalaman saya (memang terbatas).
@name
lebih intuitif daripada self.name
? Yang terakhir, IMO, lebih intuitif.
@foo
dan self.foo
sama-sama eksplisit karena tidak ada resolusi implisit yang perlu terjadi (misalnya dalam C ++, anggota instance dapat "secara implisit" diakses tanpa "secara eksplisit" menggunakan ruang nama). Satu-satunya perbedaan adalah bahwa Ruby memperkenalkan semantik baru (@), sedangkan Python tidak. Apakah atau tidak semantik baru itu sepadan dengan jumlah kata yang dihindari adalah murni subjektif. Meskipun demikian, perlu dicatat bahwa sebagian besar bahasa modern memilih untuk memperkenalkan konsep di sini (misalnya, php's $ this, JS's this).