tgoop.com/PyLab/448
Last Update:
#سول.
آیا پایتون مثل سایر زبانها سخت گیرانه عمل میکند و واقعا private ها از بیرون کلاس قبال دسترس نیستند؟
خیر! پایتون میگه اگر میخوای دسترسی پیدا کنی با روشی که بهتون میگه بهتون دسترسی میده!!
فرض کنید داریم:class Employee:
و اگر کلاس بالا را بخواهیم مثل زیر استفاده کنیم
def __init__(self, name, sal):
self.__name=name # private attribute
self.__salary=sal # private attribute
>>> e1=Employee("Bill",10000)
و بخواهیم به فیلد حقوق فرد دسترسی داشته باشیم
>>> e1.__salary
خطای زیر را می بینیم:
AttributeError: 'employee' object has no attribute '__salary'
چرا که فیلد خصوصی تعریف شده! اما میتونید بگید:
>>> e1._Employee__salary
10000
یعنی با ذکر _ و بعد نام کلاس و بعد اسم فیلد دسترسی به عضو خصوصی داد!
حتی میشه عوضش هم کرد!!
>>> e1._Employee__salary=20000
>>> e1._Employee__salary
20000
Python performs name mangling of private variables. Every member with double underscore will be changed to _object._class__variable. If so required, it can still be accessed from outside the class, but the practice should be refrained.
BY Python_Labs🐍
Share with your friend now:
tgoop.com/PyLab/448