学习。。。python定制方法
来源:互联网 发布:现货倚天屠龙指标源码 编辑:程序博客网 时间:2024/05/29 08:30
<pre name="code" class="python">class Chain(object): def __init__(self,path=''): self._path = path def __getattr__(self,path): return Chain('%s/%s' % (self._path, path)) def __call__(self,path): return Chain('%s/%s' % (self._path, path)) def __str__(self): return self._path __repr__ = __str__ print(Chain().status.user.timeline.list)print(Chain().status.user('kopite').timeline.list)
__getattr__ 找不到相对于的属性时调用
如:
s = Chain()print(s.name)输出--->/name
__call__ 本身也可以作为函数
如:
s = Chinai()print(s.uers('kopite'))-->/users/kopite
__str__ print中直接打印
__repr__ 直接打印
Chain().user.bin-->/user/bin
__iter__
如果一个类想被用于for ... in
循环,类似list或tuple那样,就必须实现一个__iter__()
方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()
方法拿到循环的下一个值,直到遇到StopIteration
错误时退出循环。
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 # 返回下一个值
>>> for n in Fib():... print(n)...11235...4636875025
__getitem__
定制该方法便可使用[]访问
class Fib(object): def __getitem__(self, n): if isinstance(n, int): # n是索引 a, b = 1, 1 for x in range(n): a, b = b, a + b return a if isinstance(n, slice): # n是切片 start = n.start stop = n.stop if start is None: start = 0 a, b = 1, 1 L = [] for x in range(stop): if x >= start: L.append(a) a, b = b, a + b return L
>>> f = Fib()>>> f[0]1>>> f[1]1
>>> f[0:5][1, 1, 2, 3, 5]
可实现[]访问 切片也可以
但没有对f[::2]进行处理 所以还得继续 。。。啊
0 0
- 学习。。。python定制方法
- python学习-定制类
- python 学习--定制类
- python学习之类特殊方法定制 __add__,__iadd__,__radd__
- python学习(7)定制类的特殊方法
- python学习笔记 定制类
- Python学习29:使用特殊的方法定制类(类似于c++的运算符重载)
- 零基础入门学习Python(25):魔法方法(5)定制序列和迭代器
- python 新式类学习随笔-定制类的特殊方法(1)
- python 新式类的学习随笔-定制类的特殊方法(2)
- python 用特殊方法定制类
- 方法定制iOS学习笔记8-UITableView的定制
- python学习笔记一:定制交互式命令行
- python学习——定制类
- Python学习笔记——定制类
- iOS学习 UITableViewCell 三种定制方法
- python中的用来定制类的特殊方法的含义
- [Python]用来定制类的特殊方法
- hdu 2089 不要62(数位dp)
- QT 学习记录
- HDU1527 纯威左夫博弈
- 考前感受
- QWidget
- 学习。。。python定制方法
- Android——Tomcat+MySQL+Servlet,实现将Client传入的数据写入MySQL
- 第2周 《C语言及程序设计》程序——输出小星星
- html frame实现页面内容动态切换
- diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No such file or directory
- [hihocoder 1238] Total Highway Distance(微软2016校园招聘9月在线笔试)
- PHP内核的存储机制(分离/改变)
- CodeForces 18E Flag 2
- Unix学习(六)