python----slots属性安全类
2015-10-28 09:08
369 查看
问题:__slots__可以用于构造安全的类、如果一个类使用了__slots__那么它的属性就不在自由了。
下面举例说明:
1、自由属性。
class person(object):
def __init__(self,name,age):
self.Name=name
self.Age=age
if __name__==‘__main__':
p=person('jianglex',100)
p.ID=007;#由于没有使用slots所以属性是自由的,可以自由设置,就算设置前没有声明也没事。
2、__slots__设置非自由属性
class person(object):
__slots__=('Name','Age')
def __init__(self,name,age):
self.Name=name#注意,__init__的执行在__slots__之后;所以就算在__init__方法里也是不能执行self.ID=007的。
self.Age=age
if__name__=='__main__':
p=person('jiangle',100)
p.ID=007#这里会报错,由于我们使用了__slots__来声明属性,所以属性再也不是自由的了。
下面举例说明:
1、自由属性。
class person(object):
def __init__(self,name,age):
self.Name=name
self.Age=age
if __name__==‘__main__':
p=person('jianglex',100)
p.ID=007;#由于没有使用slots所以属性是自由的,可以自由设置,就算设置前没有声明也没事。
2、__slots__设置非自由属性
class person(object):
__slots__=('Name','Age')
def __init__(self,name,age):
self.Name=name#注意,__init__的执行在__slots__之后;所以就算在__init__方法里也是不能执行self.ID=007的。
self.Age=age
if__name__=='__main__':
p=person('jiangle',100)
p.ID=007#这里会报错,由于我们使用了__slots__来声明属性,所以属性再也不是自由的了。
相关文章推荐
- python批量执行 map reduce
- python模拟登录新浪微博
- python制作最美应用的爬虫
- 动态修改Python类和实例的方法(转)
- python中数据类型(对象)的可变和不可变性
- python id()
- Python学习
- Python 的下载安装
- Python常用方法(一)
- python 多进程实例
- python 如何设置加载其他目录脚本文件
- python 导入模块中的命令
- python 导入模块中的命令并且将命令更名
- python 如何判断调用系统命令是否执行成功
- python中单引,双引,三引号的区别
- python 如何在输出字段中调用变量
- python 中while 使用else实现双分支循环判断
- python 文件处理模块的使用,如何读取文件中数据
- python 如何查看一个变量值中有多少个字符
- python 文件处理模块的使用,给一个文件写入数据