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 аст, на модификаторҳои қатъии дастрасӣ.