首發自 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