self
පයිතන්හි වචනයේ අරමුණ කුමක්ද? එය පන්තියෙන් නිර්මාණය කරන ලද නිශ්චිත වස්තුවක් බව මට වැටහී ඇත, නමුත් එය පරාමිතියක් ලෙස සෑම ශ්රිතයක් සඳහාම පැහැදිලිවම එකතු කළ යුත්තේ මන්දැයි මට නොපෙනේ. නිදර්ශනය කිරීම සඳහා, රූබි භාෂාවෙන් මට මෙය කළ හැකිය:
class myClass
def myFunc(name)
@name = name
end
end
මට තේරෙන, ඉතා පහසුවෙන්. කෙසේ වෙතත් පයිතන්හි මා ඇතුළත් කළ යුත්තේ self
:
class myClass:
def myFunc(self, name):
self.name = name
මේ හරහා කිසිවෙකුට මා සමඟ කතා කළ හැකිද? එය මගේ (පිළිගත් සීමිත) අත්දැකීම් තුලින් මා හමු වූ දෙයක් නොවේ.
@name
වඩා බුද්ධිමත් වන්නේ කුමක් ද self.name
? දෙවැන්න, IMO, වඩා බුද්ධිමත් ය.
@foo
හා self.foo
කිසිදු සමානව පැහැදිලි වේ ගම්ය යෝජනාව සිදු කිරීමට අවශ්ය (C ++ උදා, උදාහරණයක් සාමාජිකයන් "නිසැකයෙන්ම" "පැහැදිලිව ම" නාමඅවකාශයන්හි භාවිතා නොකර ප්රවේශ විය හැක). එකම වෙනස වන්නේ රූබි විසින් නව අර්ථකථනයක් (@) හඳුන්වා දෙන අතර පයිතන් එසේ නොකරයි. නව අර්ථකථනයක් වටිනවාද නැද්ද යන්න වාචිකත්වයේ ප්රමාණයෙන් වැළකී සිටීම තනිකරම ආත්මීය ය. බොහෝ නූතන භාෂාවන් මෙහි සංකල්පයක් හඳුන්වා දීමට තෝරාගෙන ඇති බව සැලකිල්ලට ගත යුතුය (උදා: php's $ this, JS's this).