[英]Use of properties in python like in example C#
我目前使用 Python 工作了一段时间,我开始质疑自己是否应该像在 C# 中一样经常在 Python 中使用“属性”。 在 C# 中,我主要为我的大多数类创建了属性。
似乎属性在python中不那么流行,我错了吗? 如何在 Python 中使用属性?
问候,
如果您所做的只是设置和查询成员变量,则通常不需要属性。 因为Python没有封装的概念,所有的成员变量都是public的,往往不需要封装访问。 但是,属性是可能的,完全合法且流行:
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
我建议您阅读这篇文章,即使它是针对 Java 程序员的: Python 不是 Java
如果您在 C# 中公开了一个属性,那么稍后需要将其更改为一个属性,您还需要重新编译所有使用原始类的代码。 这很糟糕,因此从“以防万一”的第一天起将任何公共属性都设置为属性。
如果您有一个从其他代码中使用的属性,那么稍后需要将其更改为一个属性,那么您只需更改它,不需要发生任何其他事情。 因此,请使用普通属性,直到您发现需要更复杂的东西为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.