首发自 http://svtter.cn/2017/10/06/P...python
大部分学自Fluent Python数据库
nametuple用来构建只有少数属性可是没有方法的对象,好比数据库条目。编程
<!--more-->测试
使用python的时候常常会出现这样的问题,我想构建一个很简单的类来进行测试,可是我不得不书写大量的代码,例如code
class A: name = None num = None def __init__(self, name, num): self.name = name self.num = num def __str__(self): return '<A> name: {}, num: {}’.format(self.name, self.num)
而后才能进行建立。若是使用nametuples的话,这个例子会变成这样:orm
import collections A = collections.namedtuple(‘A', ['name', 'weight'])
这个时候代码量相对较少。对象
这个用法十分有趣,重载|
操做符来完成这个操做。three
class Pipe(object): def __init__(self, func): self.func = func def __ror__(self, other): def generator(): for obj in other: if obj is not None: yield self.func(obj) return generator() @Pipe def even_filter(num): return num if num % 2 == 0 else None @Pipe def multiply_by_three(num): return num*3 @Pipe def convert_to_string(num): return 'The Number: %s' % num @Pipe def echo(item): print item return item def force(sqs): for item in sqs: pass nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] force(nums | even_filter | multiply_by_three | convert_to_string | echo)
<未完待续>ip
<未完待续>get