هدف: جلوگیری از تغییر ناخواسته/نادرست دادهها از بیرون کلاس
سطوح دسترسی در پایتون (بر پایه قرارداد، نه اجبار سخت)
نوع
نوشتار
معنی
Public
self.name
از همهجا در دسترسه
Protected
self._name (یک آندرلاین)
قرارداده که فقط داخل کلاس/فرزندان استفاده بشه (اجباری نیست)
Private
self.__name (دو آندرلاین)
با name mangling محافظت میشه، دسترسی مستقیم بیرون سختتره
class Account:def__init__(self, balance):# privateself.__balance = balancedef get_balance(self):returnself.__balanceacc = Account(1000)print(acc.get_balance())print(acc.__balance)
1000
AttributeError: ...
نکته: پایتون واقعاً private نداره — __balance در پشت صحنه به _Account__balance تبدیل میشه (Name Mangling)؛ یعنی هنوز قابل دسترسیه ولی سختتر و دلسردکنندهست.
دسترسی کنترلشده با property
روش استاندارد پایتون برای getter/setter، بهجای متدهای دستی