setup.inQ
与complete.inQ
不同吗?
如果我把东西放在一个队列中,它就不会出现在另一个队列中,对吗?
import Queue
class Factory:
name = ""
inQ = Queue.Queue()
outQ = Queue.Queue()
def worker(self): pass
@staticmethod
def getFactory(factory_name):
if factory_name == "setup":
return SetupFactory()
elif factory_name == "dispatch":
return DispatchFactory()
elif factory_name == "complete":
return CompleteFactory()
else:
return None
class SetupFactory(Factory):
name = "setup"
def worker(self):
#extend
class DispatchFactory(Factory):
name = "dispatch"
def worker(self):
#extend
class CompleteFactory(Factory):
name = "complete"
def worker(self):
#extend
setup = Factory.getFactory("setup")
complete = Factory.getFactory("complete")
答案 0 :(得分:2)
这很容易测试:
for file in files:
with open(file) as g: #<--- file is the filename
#do stuff
我们看到<template is="dom-repeat" items="[[my.slides]]" as="slide">
<section>
<h1>slide.title</h1>
<h2>slide.content</h2>
</section>
</template>
属性确实在子类之间共享。 (将内容放入>>> import Queue
>>> class A(object):
... q = Queue.Queue()
...
>>> class B(A):
... pass
...
>>> a = A()
>>> b = B()
>>> b.q is a.q
True
与将内容放入q
)完全相同。
这是有道理的,因为b.q
是类的属性,因此在创建a.q
时会创建它。创建A.q
后,Python不会创建新的A
,因为B
只是从B
继承了属性和方法。
一般来说,如果你想拥有一个不在类的实例之间共享的属性,你可以将它放在类的初始化函数(A
)中,当你创建时,它会被python神奇地调用一个类的实例:
__init__