Sobes.tech
Junior — Middle

გთხოვთ, ახსნათ ერთ და ორჯერ ქვედა ხაზის გამოყენების განსხვავებები Python-ში ცვლადებისა და მეთოდების სახელებში.

sobes.tech AI

პასუხი AI-სგან

Python-ში, ერთჯერადი ქვედა ხაზის გამოყენება სახელის დასაწყისში (მაგალითად, _var) არის კონვენცია, რომელიც მიუთითებს, რომ ეს სახელი განკუთვნილია შიდა გამოყენებისთვის (დაცული) და არ უნდა გამოიყენოს კლასი ან მოდული გარეთ. ეს მხოლოდ რეკომენდაციაა, ინტერპრეტატორი არ აკრძალავს წვდომას.

ორმაგი ქვედა ხაზის გამოყენება სახელის დასაწყისში (მაგალითად, __var) ამოქმედებს name mangling მექანიზმს — ცვლილების სახელი ინტერპრეტატორის მიერ იცვლება, რათა გაუადვილოს წვდომა კლასის გარეთ. ეს გამოიყენება პირადი ატრიბუტების შექმნისთვის, რომლებიც რთული იქნება გადაწერილი ან შემთხვევით გამოყენებული ქვესკლასებში.

მაგალითი:

class MyClass:
    def __init__(self):
        self._protected = 1  # კონვენცია: დაცული ატრიბუტი
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # წვდომა შესაძლებელია, მაგრამ არ არის რეკომენდებული
# print(obj.__private)   # გამოიწვევს AttributeError-ს
print(obj._MyClass__private)  # წვდომა "პირად" ატრიბუტზე via name mangling

ამიტომ, ერთჯერადი ქვედა ხაზია კონვენცია, ხოლო ორჯერადი — სახელის დამალვის მექანიზმი.