Python: 如何使实例变量可用?
假设我有:
class myclass:
def __init__(self):
self.foo = "bar"
在这个情况下,foo的值需要让myclass的用户能够使用。直接从myclass的一个实例中读取foo的值可以吗?我应该在myclass中添加一个get_foo的方法,还是说添加一个foo属性更好?在这种情况下,最佳做法是什么呢?
5 个回答
1
Python的教程里对这个话题有很简单明了的讨论,建议你去看看。因为在Python中没有访问控制的概念,所以有个建议:如果在C++中你会把某些东西设为私有的,那么在Python中可以在名字前加个_,这样就表示这个东西是私有的,大家要“友好使用”。否则,你就可以直接访问它。
1
我觉得直接把“foo”暴露出来是没问题的。即使你把它放在一个“获取器”后面,执意想要访问的用户还是能找到办法的。正如tzaman提到的,“我们都是成年人了”。
如果你想稍微限制一下使用(比如让设置变得更困难),你可以考虑用属性来暴露它。属性特别适合用来展示那些是基于其他属性计算出来的值。
9
在Python中,有一句话可以说是“我们都是成年人”——如果用户需要直接访问foo
的值,那就让他们直接访问吧。如果你需要在访问这个值的时候运行一些代码,那用getter或者属性是有意义的;否则,直接访问是最好的方式。
另外,如果以后需要的话,你随时可以把它变成一个属性,完全不成问题。