Python:工厂属性

时间:2016-06-23 16:58:44

标签: python factory

setup.inQcomplete.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")

1 个答案:

答案 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__