我在同一個類中實現了幾個邏輯進程。 一個類實例爲每個進程獲取一個生成器,並且run()
推進所述生成器。在我的情況下,發電機不會結束。Python生成器函數/對象命名約定
你怎麼會在下面
調用 foo_function和 foo_object代碼class C(threading.Thread):
def foo_function(self):
""" generator *function*,
logical process foo """
while True:
# some state checks
if self.some_attr:
# side-effects here
pass
yield
def __init__(self):
# generator *object*
# i.e. process instance
self.foo_object = self.foo_function() # <- here
def run(self):
while True:
next(self.foo_object)
next(self.another_object)
if xxx:
next(self.yet_another_object)
的典型方法discovery
,authentication
,watchdog
等
我如何命名功能定義生成器並以合理的方式包含生成器對象的屬性?
最後只是爲了踢,同名的名字將是瘋了,對吧?
class C:
def foo(self):
yield 1; yield 2
def __init__(self):
self.foo = self.foo()
c = C()
type(C.foo) is function
type(c.foo) is generator
小夥子,你怎麼樣發表評論你認爲是基於看法?畢竟它處理http://martinfowler.com/bliki/TwoHardThings.html :) – 2014-11-10 12:46:17
正如書面,是的這是非常混亂。 :)你有一些具體的細節可能有助於澄清這個非常抽象的例子嗎?詳細信息:foo()純粹是爲了副作用而運行? self.maybe_foo = foo_if_some_attr() – spazm 2014-11-18 08:01:42
你真的失去了我在這一行:self.name_me_process_generator = self.name_me_process_function() – spazm 2014-11-18 08:02:50