python2.7学习笔记(10) ——面向对象高级编程
来源:互联网 发布:衣服淘宝文案描述 编辑:程序博客网 时间:2024/06/16 21:25
使用__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官方文档
使用元类
0 0
- python2.7学习笔记(10) ——面向对象高级编程
- python2.7学习笔记(9) ——面向对象编程
- Python面向对象高级编程——学习笔记
- 面向对象高级编程——Python学习笔记08
- python学习(13)——面向对象高级编程
- C++面向对象高级编程(上)学习笔记
- C++面向对象高级编程(上)学习笔记
- C++面向对象高级编程(上)学习笔记
- Python学习笔记(七)--面向对象高级编程
- 学习笔记—面向对象高级篇上(GeekBand)
- Python3学习笔记(7)—— 面向对象编程
- 【Python】学习笔记——-8.1、面向对象高级编程:1.使用__slots__
- 【Python】学习笔记——-8.2、面向对象高级编程:2.使用@property
- 【Python】学习笔记——-8.3、面向对象高级编程:3.多重继承
- 【Python】学习笔记——-8.4、面向对象高级编程:4.定制类
- 【Python】学习笔记——-8.5、面向对象高级编程:5.使用枚举类
- 【Python】学习笔记——-8.6、面向对象高级编程:6.使用元类
- python学习笔记(七) - 面向对象高级编程
- UISearchBar的基本用法
- Linux内存分配--伙伴系统
- android菜鸟进阶之路—— HttpURLConnection 的实例
- RXJava
- Spinner下拉列表组件的3种数据绑定方式
- python2.7学习笔记(10) ——面向对象高级编程
- java中的File.separator
- MySQL 内存交换区引起的一场“血案”
- .NET Framework 3.5 无法安装以下功能 安装错误:0x800F0906
- android手机抓wireshark包的步骤-tcpdump
- [hdu 5351] MZL's Border
- The Linux Kernel Module Programming Guide(hello)
- UVa 10603:Fill(BFS)
- 愿你从根本上了解HashMap