假设我有这两个类:
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
。无论ABranch
是否有叶子,它都会继续存在,但如果Leaf
没有 a,a 就无法有意义地存在Branch
(抛开现实生活中的逻辑不谈)。这意味着我可以通过属性轻松地Leaf
从 a中获取每一个。如果我正确理解了组合,a是组合并且每个in都是它的组成部分之一?Branch
Branch.leaves
Branch
Leaf
Branch.leaves
但是,Leaf
实际上没有人知道Branch
它属于哪个。所以,我不能让它打印“这片叶子是橙色的,属于分支#14 ”。每当我初始化一个新实例时,我可以添加一个Leaf.branch
属性并传递它Leaf
,看看 aBranch
必须已经存在才能发生,但这对我来说似乎非常错误,因为它看起来像是Branch
属于Leaf
.
问题是:在我的例子中,我描述的我不能做的最pythonic和正确的方法是什么?我认为的感觉很不对,其实一点也不坏吗?或者更确切地说,这个问题是由糟糕的设计引起的,我应该从另一个角度来看这个问题吗?提前致谢。