如何重定向Python中包含类的所有方法?

2024-10-01 17:30:27 发布

您现在位置:Python中文网/ 问答频道 /正文

如何实现组合模式?我有一个类Container,它有一个属性对象Contained。我想通过调用my_container.some_contained_method()来重定向/允许访问Contained类的所有方法。我用正确的方式做正确的事情吗?

我用的是:

class Container:
   def __init__(self):
       self.contained = Contained()
   def __getattr__(self, item):
       if item in self.__dict__: # some overridden
           return self.__dict__[item] 
       else:
           return self.contained.__getattr__(item) # redirection

背景:

我正在尝试构建一个类(Indicator),它添加到现有类(pandas.DataFrame)的功能中。Indicator将拥有DataFrame的所有方法。我可以使用继承,但我遵循的是“赞成组合而不是继承的建议(参见:python: inheriting or composition中的答案)。不继承的一个原因是基类不可序列化,我需要序列化。

我找到了this,但我不确定它是否符合我的需要。


Tags: 方法selfdataframereturn序列化containerdef模式

热门问题