Junior — Middle
როგორ აღწევს Python-ში ობიექტის შიდა განხორციელების და მონაცემების გარედან წვდომისგან დამალვას?
sobes.tech AI
პასუხი AI-სგან
Python-ში ობიექტის შიდა რეალიზაციის და მონაცემების დამალვა მიღწეულია კონვენციებისა და ინკაპსულაციის მექანიზმების საშუალებით:
- ერთი ქვედა ხაზი (_var) — აღნიშნავს, რომ ატრიბუტი ან მეთოდი განკუთვნილია შიდა გამოყენებისთვის (დაცული), მაგრამ ტექნიკურად ხელმისაწვდომია გარედან.
- ორი ქვედა ხაზი (__var) — იწვევს name mangling-ს (სახელის გადაკეთებას), რაც ართულებს ატრიბუტის გარედან წვდომას, მაგალითად,
__varხდება_ClassName__var. ეს ემსახურება შემთხვევით გადაწერას და მონაცემების დამალვას.
მაგალითი:
class MyClass:
def __init__(self):
self.public = "ხელმისაწვდომია ყველასთვის"
self._protected = "შიდა გამოყენებისთვის"
self.__private = "დამალულია გარედან წვდომისგან"
obj = MyClass()
print(obj.public) # ხელმისაწვდომია
print(obj._protected) # ხელმისაწვდომია, მაგრამ რეკომენდებული არაა
print(obj._MyClass__private) # წვდომა "პირად" ატრიბუტზე name mangling-ის საშუალებით
ასე, Python-ში არ არსებობს მკაცრი პირადი წვდომა, მაგრამ არსებობს კონვენციები და მექანიზმები, რომლებიც საშუალებას აძლევენ მონაცემების დამალვას პირდაპირი წვდომისგან გარედან.