gpt4 book ai didi

python - 是不是 "Python-esque"将所有函数包装在一个类中?

转载 作者:行者123 更新时间:2023-11-30 22:48:56 27 4
gpt4 key购买 nike

所以,我现在正在用 Python 开发一个简单的网络爬虫,但我有一个关于如何构建我的代码的问题。在其他编程语言(尤其是 C++ 和 C# 等编译语言)中,我习惯将所有函数包装在类中。 IE。在我的网络抓取示例中,我可能有一个名为“WebScraper”之类的类,然后保存该类中的所有函数。如果我需要实例化原始“WebScraper”类的多个实例,我什至可能会创建第二个帮助器类,例如“WebScraperManager”。

不过,这引出了我当前的问题。类似的逻辑在当前示例中是否成立?或者我会简单地定义一个 WebScraper.py 文件,而该文件中没有包装器类,然后只需将我需要的函数导入到某个 main.py 文件中?

最佳答案

类和函数之间的区别应该在于类具有状态。有些类没有状态,但这很少是一个好主意(我确信有异常(exception),例如抽象基类(ABC),但我不确定它们是否计数),并且有些函数确实有状态,但是这很少是一个好主意(缓存或检测可能是异常(exception))。

如果你想要一个 URL 作为输入,并说一个 dict 作为输出,然后你就完成了该网站,那么就没有理由有一个类。只需有一个接受 URL 并返回字典的函数即可。无状态函数是比类更简单的抽象,因此在所有其他条件相同的情况下,更喜欢它们。

但是,很多时候可能会涉及中间状态。例如,也许您正在抓取基于基本 URL 的一系列页面,而急于完成所有这些操作的成本太高。也许您想要的是一个以根 URL 作为其构造函数的类。然后,它有一些方法用于查询它可以跟踪哪些子 URL,以及用于排序后续子项抓取的方法,这些子项可能存储在嵌套数据结构中。

当然,如果您的任务相当复杂,您很可能拥有使用类或调用函数的类的函数的层。但持久状态可以很好地指示当前任务是否应该编写为类或函数集。

编辑:只是为了关闭循环并回到原来的问题:不,我想说将所有函数包装在类中不是Python式的。自由函数在 python 中很好,这完全取决于什么是合适的。另外,Pythonesque 这个术语并不是很 Pythonic ;-)

关于python - 是不是 "Python-esque"将所有函数包装在一个类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com