【发布时间】:2014-07-22 02:22:07
【问题描述】:
我做了一个复杂的课程,现在我必须对其进行跟踪并将其注册到更大的课程中以进行管理。
问题在于,复杂类可能会创建自己的新实例。因此,我必须在我的经理中检测到这个新创建。
另一个问题是经理不止一个。它们被用作会话管理器。每个都有一个初始的复杂对象。如果复杂对象实例化了它自己的一个新实例,那么只有优秀的管理者必须被警告。
下面是一个代码示例来说明我的问题:
class Foo:
def create_another(self):
# Do something
return Foo()
class Manager:
def __init__(self):
init_object = SomeDecorator(Foo()) # I guess there will be a decorator
self.objects = [init_objects]
m1 = Manager()
assert len(m1.objects) == 1
m1.objects[0].create_another()
assert len(m1.objects) == 2
m2 = Manager()
assert len(m1.objects) == 2
assert len(m2.objects) == 1
m1.objects[0].create_another()
assert len(m1.objects) == 3
assert len(m2.objects) == 1
m2.objects[0].create_another()
assert len(m1.objects) == 3
assert len(m2.objects) == 2
【问题讨论】:
-
TBH 我不太确定你在这里问什么...如果你问一些更具体的问题会有所帮助吗?
-
类 Foo 是一个树节点,可以创建新节点作为新子节点。我想通过上下文(Manager)保存新节点的创建。Manager 和 Foo 之间没有逻辑链接,所以我认为编辑 Foo 类不好。 Manager 类用于加载/保存树并在我的架构中添加服务层。
-
第二个断言应该是针对 m1 的吧?
-
这很难说,因为你想要什么是模糊的,但这听起来像是电路组件架构和事件的一个很好的用例。见:circuits.readthedocs.org