Sobes.tech
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-ში არ არსებობს მკაცრი პირადი წვდომა, მაგრამ არსებობს კონვენციები და მექანიზმები, რომლებიც საშუალებას აძლევენ მონაცემების დამალვას პირდაპირი წვდომისგან გარედან.