python - 如果我到处都在处理字典,我应该把它们设为 "classes"吗?

标签 python oop

现在,我有很多 python 文件。每个都有很多功能。

我到处传递 HashMap 。基本词典,以单词为键,以分数为值。

{ 'dog': 33, 'cat': 294 }

我也在做一些更复杂的结构,比如:

{ 'dog': [ 33, 66, 11, 88 ], 'cat': [11, 66, 22] }

我需要将这些变成我自己的“对象”吗?如果是这样,它们会是什么? 我不太喜欢 OOP,所以我会问这些菜鸟问题。

最佳答案

我维护了一个大型代码库多年,它更喜欢原始指令而不是对象,我的观点是,如果这个代码库将由 A) 另一个人或 B) 几个人维护,你应该开始迁移到真正的类和哎呀。首先,您可以通过查看源代码甚至使用 dir() 和其他内省(introspection)技术以交互方式轻松查看类实例应该具有的属性,这使您的代码更容易学习,修改、维护。使用具有直观名称、定义明确的属性、文档和可读源代码的类,理解和调试就容易得多,而不是一大堆函数,这些函数将字典作为参数,并在运行时以多种方式转换它们只有阅读整个代码库才能理解。当涉及类时,回溯通常也更容易阅读和破译,因为您不会收到通用的低级错误消息。

作为进一步的证据,请查看成熟且成功的 Python 项目。您会看到很多 OOP、类和文档。原始字典、列表、集合和元组在适当的时候(你的数据真的很简单)和小型项目和脚本都很棒,但可维护性不会持续超过一定的项目规模。只有当您的 X 概念极其简单时,“X 只是一个指令”的概念才会存在。

关于python - 如果我到处都在处理字典,我应该把它们设为 "classes"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720440/

相关文章:

python - 猜猜字母程序不起作用?

python - Numpy:比较两个数据集的适应性

javascript - 理解 Javascript 的 OOP : instances modifying other instances

python - 装饰所有继承的方法

python - 在 Decimal 类 Python 中设置精度

python - Spyder在训练神经网络时关闭

c++ - 为什么使用对象进行编程不被认为是程序性的?

c# - C# 中的单例模式

python - SCU 如何使用 C-GET 从 Dicom 服务器接收 dcm 图像?

model-view-controller - MVC 框架 - 服务器端 DOM 操作