Python3学习(23)--__slots__ 限制实例属性的绑定
来源:互联网 发布:手机自定义抽奖软件 编辑:程序博客网 时间:2024/06/03 22:32
__slots__ 限制实例属性的绑定
我们上一篇学了,实例可以随意绑定属性变量甚至方法,当然类也可以随意绑定属性变量和方法,但是,实例绑定的属性和方法,只能针对当前实例适用,其他类的实例无法进行访问:
如果想要其他实例访问到我们绑定的属性或者方法,根据上一篇讲的,我们通过给类绑定就好了,这样,其他实例均可以访问的到:
#!/usr/bin/env Python3# -*- encoding:UTF-8 -*-import types class Student(object): pass def hello(self,name): print('hello ,',name) Student.my_hello = types.MethodType(hello,Student) #为类Student绑定一个my_hello方法,方法指向hellom=Student()n=Student()m.my_hello('Appleyk')n.my_hello('Kobe')
我们通过types模块里面的MethodType,为类Student指定一个函数hello,并把这个hello绑定到类Student的一个新方法my_hello,当然我们也可以为实例这样做,我们看下执行结果:
Python如此灵活,静态语言Java和C#不能这样做吧,在Python中,如果我们想要给已定义好的类增加一个新功能,我们可以通过额外的给类绑定一个函数实现,当然,我们也可以自私的只给我们当前使用的实例绑定一个新功能。
回到本篇所讲,在Python中,有一个特殊变量__slots__,这个变量是干嘛的呢?它的作用是限制一个类中实例的属性绑定,我们看如下demo:
__slots__.py:
#!/usr/bin/env Python3# -*- encoding:UTF-8 -*-class Student(object): __slots__ = ('name','sex') s = Student()s.name = 'Appleyk's.sex = '男'print(s.name)print(s.sex)
没问题,如果我们再给实例s绑定一个属性score,会怎么样?
当然,这种特殊的限制绑定属性的方式,只针对当前类的实例,如果,发生在子类的实例身上,则这个限制无效:
如果,子类也想限制实例的属性绑定,和父类一样,需要在子类中也定义一个__slots__特殊变量。
本篇结束!
阅读全文
0 0
- Python3学习(23)--__slots__ 限制实例属性的绑定
- Python学习笔记 __slots__ 限制类属性
- python通过__slots__限制类实例动态的增加属性、方法
- 类的__slots__属性
- python学习:限制实例的属性
- Python-用__slots__限制类属性
- Python3学习(22)--类的属性和实例的属性
- python 类的__slots__属性
- Python学习:给类的实例绑定属性和方法
- [Python]新式类的__slots__属性
- Python3之__slots__用法
- 7-2 如何为创建大量实例节省内存定义类的__slots__属性,它是用来声明实例属性名,sys.getsizeof字的列表
- Python类属性或实例属性的类型限制
- Python----__slots__ 一个类允许的属性列表
- JavaBean中的绑定属性与限制属性
- python学习:实例动态绑定属性和方法
- python3 使用静态属性节约对象实例的内存开销
- python学习02 --__slots__
- EventBus源码分析(四): 发送Event和响应注册的回调方法
- java.sql.SQLException: Access denied for user 'è‘??????“'@'localhost' (using password: YES)
- Python 实现 深度学习图片爬虫、以及批量处理工具
- xpath
- Schlumberger.ECLIPSE.2014.1安装提示password failed check flexlm..报错解决方法
- Python3学习(23)--__slots__ 限制实例属性的绑定
- Elasticsearch之文档。
- Spring Boot 实例通过接口安全退出
- hdu 6183 Color it(变种线段树)
- Server端判别客户端访问的客户端类型
- iOS----解析网络json
- Android动画效果之初识Property Animation(属性动画)
- 关于网页的400错误
- Azkaban的使用