python - 如何决定何时引入新类型而不是使用列表或元组?

标签 python

我喜欢用 Python 做一些愚蠢的事情,比如解决编程难题、编写小脚本等。每次在某个时候我都会面临一个两难选择,是我应该创建一个新类来表示我的数据,还是只使用快速和dirty 并使用列表或元组中的所有值。由于极度懒惰和个人不喜欢 self 关键字,我通常选择第二个选项。

我理解从长远来看,用户定义的数据类型更好,因为 path.min_costpoint.x, point.y 更具表现力路径 [2]point[0], point[1]。但是当我只需要从一个函数返回多个东西时,我觉得工作量太大了。

所以我的问题是,选择何时创建用户定义的数据类型以及何时使用列表或元组的最佳经验法则是什么?或者也许有一种我不知道的简洁的 pythonic 方式?

谢谢。

最佳答案

你知道collections.namedtuple吗? ? ( since 2.6 )

def getLocation(stuff):
    return collections.namedtuple('Point', 'x, y')(x, y)

或者,更有效地,

Point = collections.namedtuple('Point', 'x, y')
def getLocation(stuff):
    return Point(x, y)

namedtuple 可以通过索引 (point[0]) 访问并解包 (x, y = point) 与 tuple,因此它提供了几乎无痛的升级路径。

关于python - 如何决定何时引入新类型而不是使用列表或元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11609027/

相关文章:

python - 从数组中删除元素

将目录中的所有 xlsx 文件更改为 CSV 损坏原始文件的 Python 代码

Python "money off"交易功能不起作用

python - 如何从列表列表中制作有序字典?

python - wxpython 的 DRAG 鼠标光标 ID 是什么?

python - reload() 似乎没有重新加载模块

c++ - 使用 python 正则表达式从 C++ 源中提取命名空间

Python/最小正整数

python - 无法通过变量传递 RGB 值

python - 尝试过滤列表时出现 TypeError : 'NoneType' object is not iterable,