2010-07-24 14 views
7

Actualmente trabajo con Python por un tiempo y llegué al punto en el que me preguntaba si debería usar "Propiedades" en Python tan a menudo como en C#. En C#, he creado principalmente propiedades para la mayoría de mis clases.Uso de propiedades en Python como en el ejemplo C#

Parece que las propiedades no son tan populares en Python, ¿me equivoco? ¿Cómo se usan las propiedades en Python?

cordiales,

Respuesta

10

Propiedades a menudo no son necesarios si todo lo que hacen está ajustado y variables miembro consulta. Como Python no tiene ningún concepto de encapsulación, todas las variables miembro son públicas y, a menudo, no es necesario encapsular accesos. Sin embargo, las propiedades son posibles, perfectamente legítimo y popular:

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 
7

Yo te recomiendo leer esto, incluso se dirige a progrmamers Java: Python Is Not Java

+0

+1 Eso es una lectura que vale la pena. – volting

2

Si comete un atributo pública en C#, posteriormente, será necesario cambiarlo en una propiedad también es necesario volver a compilar todo el código que utiliza la clase original. Esto es malo, así que convierta cualquier atributo público en propiedades desde el primer día 'por las dudas'.

Si tiene un atributo que se usa desde otro código y luego necesita cambiarlo a una propiedad, simplemente lo cambia y no tiene que pasar nada más. Así que usa atributos comunes hasta el momento en que encuentres que necesitas algo más complicado.