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
ამიტომ, ერთჯერადი ქვედა ხაზია კონვენცია, ხოლო ორჯერადი — სახელის დამალვის მექანიზმი.