在Python中像C#示例一样使用属性
我最近在用Python编程,到了一个阶段,我开始思考自己是否应该像在C#中那样频繁使用“属性”。在C#中,我大多数类都创建了属性。
看起来在Python中,属性并不是那么受欢迎,我是不是搞错了?在Python中该怎么使用属性呢?
问候,
3 个回答
2
如果你在C#中把一个属性设置为公开的,然后后来想把它改成一个属性(property),那么你需要重新编译所有使用这个类的代码。这就很麻烦,所以从一开始就把任何公开的属性设置成属性,省得将来麻烦。
如果你有一个属性被其他代码使用,后来想把它改成属性,你只需要改一下,其他的就不需要做了。所以在你发现需要更复杂的东西之前,可以先用普通的属性。
7
我建议你读一下这个,虽然它是针对Java程序员的:Python并不是Java
15
如果你只是设置和查询成员变量,通常不需要使用属性。因为在Python中,没有封装的概念,所有的成员变量都是公开的,所以通常不需要对访问进行封装。不过,使用属性是完全可以的,而且也很流行:
class C(object):
def __init__(self):
self._x = 0
@property
def x(self):
return self._x
@x.setter
def x(self, value):
if value <= 0:
raise ValueError("Value must be positive")
self._x = value
o = C()
print o.x
o.x = 5
print o.x
o.x = -2