Python'da o'zgaruvchi va metod nomlarida bitta va ikki chiziqcha ishlatish farqlarini tushuntiring.
sobes.tech AI
AIdan javob
Python'da, o'zgaruvchi yoki metod nomining boshida yagona chiziqcha (masalan, _var) ishlatilishi, bu nomning ichki foydalanish uchun (himoyalangan) mo'ljallanganligini ko'rsatadigan an'anaviy qoidadir va sinf yoki modul tashqarisida ishlatilmasligi kerak. Bu faqat tavsiya, interpretator kirishga taqiqlamaydi.
Ikki chiziqcha bilan boshlanadigan nom (masalan, __var) name mangling mexanizmini ishga tushiradi — o'zgaruvchi yoki metod nomi interpretator tomonidan o'zgartiriladi, sinf tashqarisidan kirishni qiyinlashtirish uchun. Bu maxfiy atributlar yaratish uchun ishlatiladi, ular o'zgartirilishi yoki tasodifan subklasslarda ishlatilishi qiyin bo'ladi.
Misol:
class MyClass:
def __init__(self):
self._protected = 1 # an'ana: himoyalangan atribut
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # kirish mumkin, lekin tavsiya etilmaydi
# print(obj.__private) # AttributeError xatosi chiqaradi
print(obj._MyClass__private) # name mangling orqali "maxfiy" atributga kirish
Shunday qilib, yagona chiziqcha an'ana, ikki chiziqcha esa nom yashirish mexanizmi hisoblanadi.