繁体   English   中英

在 python 中使用属性,如示例 C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM