2

次の 2 つのクラスがあるとします。

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は、葉があるかどうかに関係なく存在し続けますが、 aなしでは(現実の論理は別として)Leaf意味のある存在はできません。Branchつまり、属性を介してLeafaから every を簡単に取得できます。構成を正しく理解していれば、aは複合体であり、すべての inはその構成要素の 1 つですか?BranchBranch.leavesBranchLeafBranch.leaves

しかし、実際にはそれがどちらに属しているのLeafかはわかりません。Branchそのため、「この葉はオレンジ色で、ブランチ #14 に属しています」と出力することはできません。属性を追加して、新しいインスタンスLeaf.branchを初期化するたびにそれを渡すこともできます。そのためには がすでに存在している必要がありますが、 が に属しているように見えるため、それは私には非常に間違っているように思えます。LeafBranchBranchLeaf

問題は、私の例ではできないと説明したことを行うための最もpythonicで正しい方法は何ですか? 私が非常に間違っていると思ったことは、実際にはまったく悪いことではありませんか? というか、この問題は設計の悪さから生じたものであり、これを別の角度から見たほうがよいのでしょうか? 前もって感謝します。

4

1 に答える 1