2013-04-08 38 views
2

我有機會獲得一臺發電機國債收益率通過motor蒙戈適配器從數據庫屬性的哈希值:管道發電機一起

for attrs in (yield motor_generator): 
    print attrs 

我試圖創建一個類的方法,可以實例化自己的實例,如果給定發電機,但不完全確定如何去做。我有:

class Model: 
    @classmethod 
    def instantiator(self, motor_generator): 
    (self(attrs) for attrs in (yield motor_generator)) 

USECASE:

for instance in Model.instantiator(motor_generator): 
    instance.attr = 'asdf' 

但這只是提出了一個 '產生不明物體' 的錯誤。

+0

更多關於motor_generator可以在HTTP上找到: //motor.readthedocs.org/ en/latest/api/generator_interface.html,但這對我的問題來說確實是偶然的。 – 2013-04-08 01:15:23

回答

0

我有代碼snippts,可以激發你:

snippet1

class Model: 
    @classmethod 
    def instantiator(self, motor_generator): 
    # you can not put the yield here. it will transform this function into a generator. 
    return map(self, motor_generator) # map is lazy in python 3 

snippet2

class Model: 
    @classmethod 
    def instantiator(self, motor_generator): 
    attrss = motor_generator # I put this outside because i fear a syntax misunderstanding with generators 
    return [self(attrs) for attrs in attrss] # with round brackets it would be evaluated on demand = in the for loop but not in this method 

snippet3

for instance in Model.instantiator((yield motor_generator)): 
    instance.attr = 'asdf'