class Pizza(object): def __init__(self, radius, height): self.radius = radius self.height = height @staticmethod def compute_area(radius): return math.pi * (radius**2) @classmethod def compute_volume(cls, height, radius): return height * cls.compute_area(radius) def get_volume(self): return self.compute_volume(self.height, self.radius)
yield (生产者&消费者模型)
def consumer(): r = '' while True: n = yield r if not n: return print ('[CONSUME] Consuming %s...' %n)def produce(c): c.send(None) n = 0 while n<5: n = n + 1 print ('[PRODUCER] Producting %s...' %n) r = c.send(n) print ('[PRODUCER] Consumer return: %s' %r) c.closec = consumer()produce(c)
__getattr__ 链式调用
class Chain(object): def __init__(self, path = ''): self._path = path def __getattr__(self, path): return Chain('%s%s' %(self._path, path)) def __str__(self): return self._path __repr__ = __str__