python2.7学习笔记(10) ——面向对象高级编程
2015-09-09 16:34
1051 查看
使用__slots__
如果我们想要限制class的属性怎么办?比如,只允许对Student实例添加name和age属性。为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class能添加的属性:
>>> class Student(object): ... __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称 ...
使用__slots__要注意,__slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的:
使用@property
多重继承
直接在括号中写出继承的多个类,用逗号隔开定制类
__str__ 使用print 对象调用的函数__repr__ 直接敲入对象名调用的函数
class Student(object): def __init__(self, name): self.name = name def __str__(self): return 'Student object (name=%s)' % self.name __repr__ = __str__ #偷懒的写法,表示__str__和__repr__一样
__iter__
如果一个类想被用于for … in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的next()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。
我们以斐波那契数列为例,写一个Fib类,可以作用于for循环:
class Fib(object): def __init__(self): self.a, self.b = 0, 1 # 初始化两个计数器a,b def __iter__(self): return self # 实例本身就是迭代对象,故返回自己 def next(self): self.a, self.b = self.b, self.a + self.b # 计算下一个值 if self.a > 100000: # 退出循环的条件 raise StopIteration(); return self.a # 返回下一个值
更多详细链接
python官方文档
使用元类
相关文章推荐
- 零基础学python-13.3 列表解析简介与步骤分解
- 零基础学python-13.3 列表解析简介与步骤分解
- python Queue
- IPython notebook的安装配置
- python列表和元组
- python运算符
- Python发送邮件
- python程序输入和内建函数raw_input()
- Python学习二---字符串
- 交叉编译python 2.7.3 for arm
- wordpress学习五: 通过wordpress_xmlrpc的python包远程操作wordpress
- python 读写Excel
- Python对象及内存管理
- python日志
- Python的AOP利器:装饰器
- 零基础学python-13.2 手动迭代:iter和next
- 零基础学python-13.2 手动迭代:iter和next
- Python时间模块之Time模块解析
- SAE部署Python-让云端自动运行Python代码
- 多层感知器python代码(简单的多层感知器)