代码之家  ›  专栏  ›  技术社区  ›  Julius F

在python中使用类似于示例C的属性#

  •  7
  • Julius F  · 技术社区  · 14 年前

    我目前在Python上工作了一段时间,我开始怀疑自己是否应该像在C#中一样经常在Python中使用“Properties”。 在C语言中,我主要为我的大多数类创建属性。

    属性在python中似乎不那么流行,我错了吗? 如何在Python中使用属性?

    当做,

    3 回复  |  直到 14 年前
        1
  •  12
  •   Philipp    14 年前

    如果您只需要设置和查询成员变量,则通常不需要属性。因为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
    
        2
  •  7
  •   Tony Veijalainen    14 年前
        3
  •  2
  •   Duncan    14 年前

    如果您在C中公开了一个属性,那么以后需要将其更改为属性,您还需要重新编译使用原始类的所有代码。这是不好的,所以从第一天起,将任何公共属性设置为“以防万一”属性。

    如果您有一个从其他代码中使用的属性,那么以后需要将其更改为属性,那么您只需更改它,就不需要执行任何其他操作。所以使用普通属性直到你发现你需要更复杂的东西。