杂记(python)

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.close
c = 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__

 

posted @ 2016-03-04 13:34  von · van  阅读(156)  评论(0编辑  收藏  举报