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-ის მექანიზმია, ვიდრე მკაცრი წვდომის მოდიფიკატორები.