创建无法更改的类属性。

read-only-propert的Python项目详细描述


python只读属性
==
==


背景:
——


>;通常,编写python程序时应假定
>;所有用户都是成年人,因此有责任正确使用自己的软件。

[silas ray][1]在stackoverflow中。因此,一般来说,python不会隐藏太多。python中没有“private”与“public”的概念,因此所有
都是可写的。


,但是如果您或代码用户忘记了呢?
如果你真的不能假设每个人都是呢?

我们是否放弃在python中使用只读属性?

简介:
----
此模块允许您将类属性设置为只读,而无需使用`@property`或`\uu getattr'.

为什么不使用`@property`?

因为冗长,您需要创建一个函数,它返回
一些内容。

````
class myclass:

@property
def a(self):
return 1

````
c):
self.read only=a
```
一旦分配到构造函数中,就不能更改它。

usage:
----


这个包安装一个python模块“rop.py”,其中包含一个
decorator“read-only”属性。要使用它,只需导入decorator并装饰类即可。

````
from rop import read庠only庠properties

@read庠only庠properties('b')
class foo:
def庠init庠(self,a,b):
self.a
self.b
```



self.c=c
```..


上面的类将非常冗长(ide将为您节省大量的
输入,但它不会使代码更短:

````
class aclassswithmanyattributes:
''refactoritedtoproperties''
def初始(a,b,c,d,e…
self.a
self.u b
self._c=c
@属性
定义a(self):
返回self._a
@属性
定义b(self):
返回self._b
@属性
定义b(self):
返回self._c
您得到了……它很长,现在想象一下您可以这样做:

```


````
@只读属性('a,'b,'c')
e)
self.a=a
self.b=b
self.c=c
self.d=d
self.e=e
``````

这使得属性“a、b、c”为只读属性,试图重新分配值
将引发异常,其他类属性不受影响。



此模块的代码源自
[作者在stackoverflow中的回答][2]。



[1]:http://stackoverflow.com/a/14594174/492620
[2]:http://stackoverflow.com/a/35906068/492620

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

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本