让一个类的每个实例都知道另一个类的一个特定实例的最佳方法是啥?
Posted
技术标签:
【中文标题】让一个类的每个实例都知道另一个类的一个特定实例的最佳方法是啥?【英文标题】: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 类吗?
【问题讨论】:
【参考方案1】:这取决于您想要达到的目标。成员表示有关系。那么Foo
有Bar
还是Bar
有Foo
?
例如,Pet
是否有所有者 (Person
) 或 Person
是否有 Pet
?归根结底是您必须要做的事情:您是否必须知道Pet
的所有者是谁,或者您是否想知道Pet
和Person
拥有什么。
【讨论】:
感谢您的回复!每个Bar
、Fizz
和Wizz
都需要知道他们都属于哪个Foo
。一个Foo
有多个Bar
s、Fizz
es、Wizz
es,但它们都可以独立于Foo
存在——(我认为)以上是关于让一个类的每个实例都知道另一个类的一个特定实例的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章