[英]What's the correct way to test this “setUp()” function inside this class?
[英]What is the correct way to access a class composite inside one of its components, if that's even advisable?
假设我有这两个类:
class Branch():
def __init__(self, id, leaves):
self.id = id
self.leaves = leaves
class Leaf():
def __init__(self, color)
self.color = color
def describe()
print("This leaf is " + color)
每个Leaf
都属于一个Branch
。 无论是否有叶子, Branch
都会继续存在,但是没有Branch
, Leaf
就无法有意义地存在(撇开现实生活的逻辑不谈)。 这意味着我可以通过Branch.leaves
属性轻松地从Branch
中获取每一片Leaf
。 如果我正确理解了组合, Branch
是组合, Branch.leaves
中的每个Leaf
都是它的组成部分之一?
但是,没有一个Leaf
实际上知道它属于哪个Branch
。 所以,我不能让它打印“这片叶子是橙色的,属于分支#14 ”。 我可以添加一个Leaf.branch
属性并在我初始化一个新的Leaf
实例时传递它,看看一个Branch
必须已经存在才能发生,但这对我来说似乎很错误,因为它看起来像Branch
属于Leaf
。
问题是:在我的例子中,我描述的我不能做的最pythonic和正确的方法是什么? 我认为的感觉很不对,其实一点也不坏吗? 或者更确切地说,这个问题是由糟糕的设计引起的,我应该从另一个角度来看这个问题吗? 提前致谢。
在视图和子视图的复杂树中,每个单独的视图都有一个指向父视图和 window 的指针。 在菜单项和子菜单的复杂树中,每个项目都有一个指向顶部菜单的指针。 一个孩子知道它的父母或一个项目知道它的容器真的很常见。 没有它,有些设计是不可能的。
在必须担心 memory 管理的语言中,对父级的引用必须是弱引用,这意味着子级永远不必担心其父级的生命周期(反之则不然)。 即使在 Python 中,父级也拥有子级,它可以在需要时自由创建或删除,但显然,子级永远无法创建或删除其父级(因为它不知道自己的容器或所有者,所以无论如何它都无法这样做) )。
因此,这两个对象之间存在明确的层次关系,但这与它们是否可以相互认识无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.