python - 我应该在 Python 方法名称中使用 get_/set_ 前缀吗?

标签 python coding-style

在 Python 中,使用属性代替 Java 风格的 getter、setter。所以很少有人在类的公共(public)接口(interface)中看到 get... 或 set.. 方法。

但在某些情况下,如果某个属性不合适,可能仍会使用行为类似于 getter 或 setter 的方法。现在我的问题是:这些方法名称应该以 get_/set_ 开头吗?还是这种非Python式的冗长,因为它的含义通常很明显(并且仍然可以使用文档字符串来澄清不明显的情况)?

这可能是个人品味问题,但我想知道大多数人对此有何看法?作为 API 用户,您更喜欢什么?

示例:假设我们有一个代表多个城市的对象。可能有一种方法 get_city_by_postalcode(postalcode) 或者可以使用更短的名称 city_by_postalcode。我倾向于后者。

最佳答案

通过使用 descriptors,您将永远不会失去让您的属性像 getter/setter 一样工作的机会。 .如果要将属性更改为只读,也可以将其替换为与属性同名的 getter 方法,并使用 @property 对其进行修饰。因此,我的建议是避免使用 getter/setter,除非您正在处理的项目已经使用了它们,因为您以后随时可以改变主意,将属性设置为只读、只写或其他任何状态,而无需修改类的接口(interface)。

关于python - 我应该在 Python 方法名称中使用 get_/set_ 前缀吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/374763/

相关文章:

python - 类型为 'NoneType' 的对象没有 len(),但我很确定我的对象是一个有效列表

python - 让 python 将编译代码存储在文件流而不是 pyc 文件中是一个好主意吗?

eclipse - 如何创建 Intellij 和 Eclipse 兼容的代码风格和代码格式配置(针对 java 代码)?

javascript - 设置顶部和左侧 CSS 属性

python - 我可以/应该通过分配给属性来实现 Python 方法吗?

Python 空闲 : Run main?

python - tweepy api.me() 不返回 friend 的用户对象

python - 将矩阵数组制作成矩阵的三元组数组/Python Pandas

java - 扩展类与添加 boolean 参数

java - 如何在java编码中添加另一个圈