首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从类初始化器内部调用方法是pythonic吗?

从类初始化器内部调用方法是pythonic吗?
EN

Stack Overflow用户
提问于 2016-03-26 11:58:17
回答 2查看 88关注 0票数 1

我觉得这是一个更普遍的问题,但这里有一个我正在考虑的例子:我有一个python类,它在初始化过程中通过zip归档并提取一些数据。

下面的代码块是显式地在"def init“中写的,还是应该作为一个方法在"def init”中被调用?哪一种方法是最“毕达通”的?

代码语言:javascript
复制
with ZipFile(filename, "r") as archive:
    for item in archive.namelist():
        match = self.pattern.match(item)
        if match:
            uid = match.group(2)
            time = match.group(3)
        else:
            raise BadZipFile("bad archive")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-26 12:20:35

如果您想要在多个地方执行您要显示的语句,那么实际上就没有讨论。如果没有用于此任务的方法或函数,您将违反干的原则。

否则..。不管怎么说我都会写一个方法。您正在显示的任务很好地自我包含,应该使用描述性名称进行抽象。它将使您的__init__方法更易于维护和阅读。

您还应该考虑编写作为模块级函数显示的代码,接受模式作为参数,因为除了self.pattern属性之外,任务似乎与类实例的数据和方法没有很强的连接(从我们现在的情况来看)。

票数 2
EN

Stack Overflow用户

发布于 2016-03-26 12:16:49

__init__()完全可以调用其他函数,包括同一个类的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36234988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档