gpt4 book ai didi

python - 我需要一个具有类继承的 Python 3 类组合结构。我该如何做到这一点?

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:44 25 4
gpt4 key购买 nike

我试图将一些对象包含到父类中,但这些对象需要能够访问父类的方法和属性。

问题是,我有一个has-a 关系,而不是一个is-a 关系.这通常暗示了一种组合结构,但组合使得访问父类对象的方法和属性变得更加困难。

我有这个示例代码来说明我需要什么:

class Body:
def __init__(self):
self.head_obj = Head() # << head_obj is now part of Body object
# ...Set-up body...

def body_actions(self):
print('Body does something')

def common_method(self):
print('Body does something Head can do') # << Head needs this method

class Head:
def __init__(self):
# ...Set-up head...

def head_actions(self):
print('Head does something')
Body.common_method() # <<This call does not work without inheritance

上面代码中,Body需要实例化一个Head对象,Head对象应该可以访问方法在 正文 中。这意味着一种混合继承和组合结构,但我无法理解。

最佳答案

您可以通过将 Body 的当前实例传递给 Head 来完成这项工作:

class Body:
def __init__(self):
self.head_obj = Head(self)

...

class Head:
def __init__(self, body_obj):
self.body_obj = body_obj

def head_actions(self):
print('Head does something')
self.body_obj.common_method()

但我真的认为您应该重新考虑您的设计。这增加了两个类之间的大量耦合,并使其变得非常困惑。

关于python - 我需要一个具有类继承的 Python 3 类组合结构。我该如何做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com