python学习-面向对象进阶之__slots__(五)
来源:互联网 发布:mac怎么更新阿里旺旺 编辑:程序博客网 时间:2024/05/25 16:38
__slots__
现在我们终于明白了,动态语言与静态语言的不同
动态语言:可以在运行的过程中,修改代码
静态语言:编译时已经确定好代码,运行过程中不能修改
如果我们想要限制实例的属性怎么办?比如,只允许对Person实例添加name和age属性。
为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性:
>>> class Person(object): __slots__ = ("name", "age")>>> P = Person()>>> P.name = "老王">>> P.age = 20>>> P.score = 100Traceback (most recent call last): File "<pyshell#3>", line 1, in <module>AttributeError: Person instance has no attribute 'score'>>>
注意:
- 使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的
In [67]: class Test(Person): ...: pass ...:In [68]: t = Test()In [69]: t.score = 100
阅读全文
0 0
- python学习-面向对象进阶之__slots__(五)
- python之面向对象进阶
- python进阶17:__slots__
- python学习-面向对象进阶之元类(三)
- python学习-面向对象进阶之私有化(六)
- python学习-面向对象进阶之属性property(七)
- python学习-面向对象进阶之闭包(八)
- python学习-面向对象进阶之迭代器(九)
- python学习-面向对象进阶之装饰器(十)
- python学习-面向对象进阶之生成器(十一)
- 【Python】学习笔记——-8.1、面向对象高级编程:1.使用__slots__
- python学习笔记1:面向对象的高级特性1__slots__
- Python-开发之路-面向对象-进阶
- Python 面向对象 —— __slots__ 与 @property
- js进阶学习之--面向对象继承
- 8面向对象高级--->__slots__
- Python学习 (五 面向对象编程)
- python学习-面向对象进阶之python是动态语言(四)
- 常见变量计算
- 1 head first---48个鸭子引发的思考
- 拉取Git代码到本地
- 第二章 套接字类型与协议设置
- tensorflow的变量的初始化,张量的计算取值
- python学习-面向对象进阶之__slots__(五)
- 【LeetCode】 Longest Substring Without Repeating Characters(Java)
- 常见的随机数据生成方法
- 特征根方程
- MySQL 体系结构
- java-final 关键字
- hdu 6047
- Zookeeper 介绍 安装 配置 原理 特点 分析
- poj1067 威佐夫博弈模板 取石子游戏