python的访问修饰符
protecc的Python项目详细描述
protecc
python的访问修饰符。
设置
PIP安装
pip install protecc
来自源
git clone https://github.com/avinashshenoy97/protecc
cd protecc
python setup.py install
用法
旧式课程
继承/扩展protecc
类。
fromproteccimportproteccclassregulatedClass(protecc):def__init__(self):self.publicVariable='public value'self._privateVariable='private value'defpublicMethod(self):returnTruedef__privateMethod(self):returnTruedefgetPrivateVariable(self):returnself._privateVariabledefprivateMethodProxy(self):returnself.__privateMethod()
新样式类(类型)
如果您更喜欢元类(为了更好的可读性/what not),请使用metaProtecc
。
classmetaRegulatedClass(metaclass=metaProtecc):def__init__(self):self.publicVariable='public value'self._privateVariable='private value'defpublicMethod(self):returnTruedef__privateMethod(self):returnTruedefgetPrivateVariable(self):returnself._privateVariabledefprivateMethodProxy(self):returnself.__privateMethod()
当访问“private”方法(即以一个或两个下划线开头的方法)时,会引发此异常
>>>r=regulatedClass()>>>r.__privateMethod()Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"/Users/avinashshenoy/STUFF/projects/protecc/protecc.py",line23,in__protecced_getattribute__raiseAccessException('Cannot access '+varType+' member '+name)fromNoneprotecc.AccessException:Cannotaccessprivatemember__privateMethod
私有方法仍然可以从其他类方法中访问,正如预期的那样:
>>>r=regulatedClass()>>>r.privateMethodProxy()True
注
- 这决不是防愚弄的访问保护。
- “private members”是指根据pep 8约定,其名称被python弄乱的成员,即以2个下划线开头,且不超过一个尾随下划线。
- 此外,“受保护成员”是指其名称前面有一个下划线的成员。正如预期的那样,这些成员也不能从类外部访问。
主要贡献者
Avinash Shenoy |
许可证
此项目在MIT License下发布。