python - 在 Python 中检索数据属性的最佳方法?

标签 python coding-style

最近我有一个问题很困惑,关于从外部检索属性的最佳方式是什么。

假设我有一个类:

class Thing:
    def __init__(self, whatever):
        self.whatever = whatever

x = Thing('foo')

现在我知道,如果我想检索 whatever 属性,我可以这样做:

x.whatever

我有一个习惯(可能是因为我来自其他 oo 语言)定义方法来根据需要检索类属性并使用它们而不是直接检索它们,例如:

class Thing:
    def __init__(self, whatever):
        self.whatever = whatever

    def getWhatever(self):
        return self.whatever

根据我的经验,我发现使用这种方法可以使事情更容易长期维护,因为如果我编辑数据属性的结构,我只需要编辑特定的方法。

但由于我并不是真正的 Python 老手,所以我很想知道我的做法是否正确,或者其他一些方法是否更好、更符合 Python 风格。想法?

最佳答案

定义明确的 getter 和 setter 是一个 bad practice在 Python 中。相反,使用 properties :

class Thing(object): # New-style class
    def __init__(self, whatever):
        self._whatever = whatever

    @property
    def whatever(self):
        return self._whatever # Insert complicated calculation here

因此,与其使用 get 方法进行预先规划,不如在实际需要高级行为时引入一个属性,并且 not any earlier .

关于python - 在 Python 中检索数据属性的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7454879/

相关文章:

python 样式 ** 问题

Kotlin 编码约定、中缀函数和按位运算

python - Bokeh - 从 BoxZoomTool/ResetTool 触发 on_change 回调

python - imshow() 的图太小

python - 调用 apiclient.discovery.build 时 URL 的 SSL 证书无效和/或丢失

java - 使用 NullPointerException 来测试 null 是不是不好的风格?

coding-style - 与语言无关的样式检查器?

c++ - CppCheck: 变量 'bla' 没有被赋值

Python:无法从 init 文件导入在 setUp 方法中初始化的全局变量

python - 使用 Numpy 进行外减法