首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在Python方法名中使用get_/set_ prefixes吗?

我应该在Python方法名中使用get_/set_ prefixes吗?
EN

Stack Overflow用户
提问于 2008-12-17 14:49:54
回答 5查看 4.1K关注 0票数 18

在Python中,使用属性而不是Java风格的getter、setter。所以很少有人能看到...或设置..类的公共接口中的方法。

但是,在属性不合适的情况下,仍然可能以行为类似于getter或setter的方法结束。现在我的问题是:这些方法名应该以get_ / set_开头吗?或者这是不明显的狂热,因为它的含义通常是显而易见的(并且人们仍然可以使用docstring来澄清不明显的情况)?

这可能是个人喜好的问题,但我对大多数人对此的看法感兴趣。作为API用户,您更喜欢什么?

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-17 15:16:04

我觉得越短越好,所以我倾向于选择后者。但重要的是要与你的项目保持一致:不要把这两种方法混在一起。如果你跳到别人的项目中,保留其他开发人员最初选择的内容。

票数 4
EN

Stack Overflow用户

发布于 2008-12-17 16:01:57

您不会失去稍后使用descriptors使您的属性表现得像一个getter/setter的机会。如果希望将属性更改为只读,还可以将其替换为与该属性同名的getter方法,并使用@property对其进行修饰。因此,我的建议是避免使用getter/setter,除非您正在处理的项目已经使用了它们,因为您可以在以后随时改变主意,将属性设置为只读、只写或其他任何形式,而无需修改类的接口。

票数 7
EN

Stack Overflow用户

发布于 2008-12-17 16:35:54

如果它可以用作属性(一个要获取或设置的值,没有其他参数,我通常会这样做:

代码语言:javascript
复制
class Foo(object):

    def _get_x(self):
        pass

    def _set_x(self, value):
        pass

    x = property(_get_x, _set_x)

如果getter/setter比这更复杂,我会使用get_x和set_x:

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

https://stackoverflow.com/questions/374763

复制
相关文章

相似问题

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