我试图将一些对象包含到父类中,但这些对象需要能够访问父类的方法和属性。
问题是我有一个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
在上面的代码中,一个Head对象需要通过 实例化Body,并且该Head对象应该能够访问Body. 这意味着一种混合继承和组合结构,但我无法弄清楚。