Sobes.tech
Junior — Middle

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.