Sobes.tech
Middle+

როგორ ხორციელდება ინკაპსულაცია Python-ში? ისაუბრე წვდომის მოდიფიკატორებზე.

sobes.tech AI

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

Python-ში ინკაპსულაცია რეალიზებულია სახელწოდების კონვენციებისა და კლასის თვისებების მეშვეობით, რადგან სხვა ენებში (private, protected, public) მკაცრი წვდომის მოდიფიკატორები არ არსებობს.

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

მაგალითი:

class MyClass:
    def __init__(self):
        self.public = "ხელმისაწვდომია ყველასთვის"
        self._protected = "სასურველია არ გამოიყენოს კლასის და მემკვიდრეების გარეთ"
        self.__private = "დამალულია პირდაპირი წვდომისგან"

obj = MyClass()
print(obj.public)        # მუშაობს
print(obj._protected)    # მუშაობს, მაგრამ არ არის რეკომენდებული
# print(obj.__private)   # გამოიწვევს შეცდომას
print(obj._MyClass__private)  # წვდომა mangling-ის მეშვეობით

ამიტომ, Python-ში ინკაპსულაცია უფრო შეთანხმება და mangling-ის მექანიზმია, ვიდრე მკაცრი წვდომის მოდიფიკატორები.