【问题标题】:What is the best way to make every instance of a class know about one particular instance of another class?让一个类的每个实例都知道另一个类的一个特定实例的最佳方法是什么?
【发布时间】:2019-10-27 13:05:16
【问题描述】:

提前感谢您的帮助,有点像业余爱好者,正在尝试使用 OOP 完成我的第一个大型项目。

我有四门课。其中三个类总是需要知道另一个类的一个特定实例。

我认为继承是我的问题的解决方案,但很快意识到它不是 - 我认为聚合更合适?谁能告诉我这是否是最合适的实现方式?

class Foo:
    def __init__(self, some_data):
        self.data = some_data

class Bar:
    def __init__(self, foo_instance):
        self.foo = foo_instance

class Fizz:
    def __init__(self, foo_instance):
        self.foo = foo_instance

class Wizz:
    def __init__(self, foo_instance):
        self.foo = foo_instance

foo = Foo("foobar")
bar = Bar(foo)
fizz = Fizz(foo)
wizz = Wizz(foo)

或者我应该在 Foo 类中定义 Bar、Fizz 和 Wizz 类吗?

【问题讨论】:

    标签: python-3.x oop aggregation


    【解决方案1】:

    这取决于您想要达到的目标。成员表示关系。那么FooBar 还是BarFoo

    例如,Pet 是否有所有者 (Person) 或 Person 是否有 Pet?归根结底是您必须要做的事情:您是否必须知道Pet 的所有者是谁,或者您是否想知道PetPerson 拥有什么。

    【讨论】:

    • 感谢您的回复!每个BarFizzWizz 都需要知道他们都属于哪个Foo。一个Foo 有多个Bars、Fizzes、Wizzes,但它们都可以独立于Foo 存在——(我认为)
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2012-09-27
    相关资源
    最近更新 更多