创建无法更改的类属性。
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
==
==
背景:
——
>;通常,编写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