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下发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java流/下载文件,无需在Spring Boot中保留内存   kotlin/java是否有类似TryParse()的东西?   java Spring引导找不到用户类型的属性ID   java Spring 2到Spring 3的迁移:一个控制器用于多个视图   java包含多个程序包名为“安卓”的库。支持图样可提取'   java spring JPA是否支持自定义值框架?   java转义出基于文本字段的搜索栏   java AAPT:错误:未找到样式属性“安卓:attr/WindowsPlashCreenBackground”   java从文本文件中读取纬度和经度   java哪里可以找到如何使用排序的示例。顺序ignorecase(),其中nullhandling nulls last用于自定义Spring JPA如何提供查询   尝试使用Dialogflow上的Webhook动态给出响应时,java获取Webhook响应错误(206)   如何在java中替换匹配的字符串?   java模拟数学的最大价值。随机的   java Spring RestTemplate GET请求未给出正确响应   春爪哇。lang.IllegalArgumentException   java系统。load()永远不会发生   java剪辑循环不工作   java如何从maven构建中删除staxapi   java ThreadPoolExecutor的排队行为是否可以自定义,以更喜欢创建新线程而不是排队?