首页 > 解决方案 > 如何有效地使用基类

问题描述

我认为使用基类对于我为应用程序定义的一组类非常有帮助。在下面的(可能不正确的)示例中,我概述了我的目标:一个包含我不想多次定义的属性的基类。在这种情况下,基类将定义文件路径的基本部分,然后每个子类将使用它来构建自己的更具体的路径。

但是,无论使用基类的单继承如何,我似乎都必须输入子类parent_path的方法。__init__

import pathlib

class BaseObject:
    def __init__(self, parent_path: pathlib.Path):
        self.parent_path = parent_path

class ChildObject(BaseObject):
    def __init__(self, parent_path: pathlib.Path, child_path: pathlib.Path):
        super(ChildObject, self).__init__()
        self.full_path = parent_path.joinpath(child_path)

class ChildObject2(BaseObject):
    ...

class ChildObject3(BaseObject):
    ...

如果是这种情况,那么除了让我的实现更清楚地尝试做什么之外,还有什么理由使用这样的基类继承?

标签: pythonpython-3.xinheritancesuper

解决方案


我没有看到这种实现的优势。正如您所指出的,您仍然必须将 传递给parent_path子实例化。您还必须调用父母的__init__,这抵消了单行清晰度“改进”。

在我看来,您已经通过使用好的属性名称清楚地说明了这一点。我会从parent_pathto切换base_path,所以读者不会寻找父对象。

或者,您可能希望将其设为父类的属性:设置一次,然后让所有对象通过直接引用共享它,而不是为每个实例传递相同的值。


推荐阅读