Python 类方法

3 投票
4 回答
823 浏览
提问于 2025-04-15 19:31

在Python中,怎样的方式(从风格上讲)最适合让大家可以公开访问一个对象的变量呢?

我看到很多不同语言的选项,想知道这些选项中,哪一种是Python推荐的方式?我现在在以下几种选择中犹豫不决:

  1. 直接访问对象的变量(比如:print(object.variable)),不考虑数据隐藏。
  2. 通过一个包装函数来访问对象的变量:

class X:
    variable_a = 0
    variable_b = 0
...
    def get_variable_a(self):
        return self.variable_a

如果这是推荐的方式,那这些方法应该怎么命名呢?(是get_variablename(),还是直接用variablename等等?)

大家对此有什么建议吗?

谢谢!

Lucy

4 个回答

2

只要直接让你想公开的变量可以被访问就行。如果你以后需要改变这个行为,可以把它改成一个属性。

注意,这和信息隐藏是两回事。obj.get_some_implementation_detail()obj.some_implementation_detail 没有什么区别。

3

在Python中没有“私有”变量。你可以查看这个文档的第9.6节 http://docs.python.org/tutorial/classes.html

不过,有一个约定,就是使用这个类的人应该尽量不要直接修改那些名字前面带下划线的变量。尽管如此,Python并没有什么机制来强制执行这一点。

对于那些名字前面带两个下划线的变量也是一样的情况。

4

在你真的需要使用访问器之前,不用急着去用它们;把一个简单的属性转换成一个属性是很快很简单的,而且不需要改动使用这个属性的代码。

当我写一个属性的时候,我会用 _get_FOO()_set_FOO() 来作为访问器,而属性本身我会用 _FOO 来表示。

撰写回答