python - 如何有效地使用基类
问题描述
我认为使用基类对于我为应用程序定义的一组类非常有帮助。在下面的(可能不正确的)示例中,我概述了我的目标:一个包含我不想多次定义的属性的基类。在这种情况下,基类将定义文件路径的基本部分,然后每个子类将使用它来构建自己的更具体的路径。
但是,无论使用基类的单继承如何,我似乎都必须输入子类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):
...
如果是这种情况,那么除了让我的实现更清楚地尝试做什么之外,还有什么理由使用这样的基类继承?
解决方案
我没有看到这种实现的优势。正如您所指出的,您仍然必须将 传递给parent_path
子实例化。您还必须调用父母的__init__
,这抵消了单行清晰度“改进”。
在我看来,您已经通过使用好的属性名称清楚地说明了这一点。我会从parent_path
to切换base_path
,所以读者不会寻找父对象。
或者,您可能希望将其设为父类的类属性:设置一次,然后让所有对象通过直接引用共享它,而不是为每个实例传递相同的值。
推荐阅读
- java - 解析文本文件并有效地拆分它
- javascript - jquery点击输入字段显示div,点击body隐藏div
- javascript - MS 图形 API:带有“/me/onlineMeetings”请求的 400 AuthenticationError
- firebase - 配置为单页应用(将所有网址重写为/index.html)后出现“出现意外错误”?是的
- maven - 将功能 Websphere Liberty 配置文件添加到应用程序
- node.js - 在重定向之前在 Express 应用中设置自定义引用者
- python - Google Calendar API 删除“conferenceData”嵌套对象
- arrays - 倒排数组(从最低索引读取)
- mysql - PRIMARY KEY 的所有部分都不能为空;如果您需要在键中使用 NULL,请改用 UNIQUE
- python - 如何修改列表中的多个项目?