papel pitón @property en la interpretación y getter setter

 

papel @property:

El @property pitón pitón es un dispositivo decorativo, que se utiliza para modificar el método.

Podemos utilizar decorador @property para crear un atributo de sólo lectura, @ método decorador de propiedad se convierte en un atributo de sólo lectura del mismo nombre, se puede utilizar con los atributos definidos, que pueden prevenir las propiedades están modificando.

1. Los métodos de modificación, de manera que el método se puede acceder como una propiedad.

clase DataSet (objeto):
  @propiedad
  def method_with_property (self): # #含有@property 
      volver 15 
def method_without_property (self): # #不含@property retorno 15 L = el conjunto de datos () Imprimir (l.method_with_property) # agregado @property, los atributos de llamada se pueden utilizar para llamar a un método en forma de, por detrás no es necesario añadir (). Imprimir (l.method_without_property ()) # no @Property añadió, debe ser utilizado en la forma de un proceso de llamada normal, es decir, después de la adición ()
# 15 ambas salidas.

Si se utiliza la propiedad modificada, y cuando se le llama, después de que el método agrega (), se mostrará un mensaje de error: TypeError: objeto 'int' no es exigible, es decir después de añadir @property, este método se convierte una propiedad, si este último se unió a la

(), A continuación se trata como una llamada de función, pero no es exigible (exigible) de.

 

2. atributo definido con el uso, que puede prevenir la propiedad se modifica.

 Debido atributos pitón definido, no hay manera de configurar la propiedad privada , y por lo tanto debe ser establecido por el @property método. Este nombre de atributo oculto, lo que permite a los usuarios utilizar el tiempo no se puede modificar libremente.

clase DataSet (objeto):
     def  __init__ (self):
        . Ser _ Imágenes = 1. 
        Ser. _ Labels = 2 # Nombre de encargo del atributo 
@Property DEF Imágenes (self): # Método @Property Después de la adición, este método es equivalente a un atributo, que permite a los usuarios el uso, y el usuario ninguna manera la libertad de modificar. retorno self._images @propiedad def etiquetas (self): retorno self._labels L = el conjunto de datos () # cuando los usuarios llaman atributos, las imágenes pueden ser llamados directamente, sin conocer el nombre de la propiedad _images, por lo que los usuarios no pueden cambiar la propiedad, para proteger la propiedad de la clase. Imprimir (l.images) # agregado @property, los atributos de la llamada se puede utilizar para llamar a un método en forma de, por detrás no es necesario añadir ().

 

getter y setter métodos:

Para convertirse en un método de obtención de propiedad, sólo tiene que añadir @propertyen este momento, @propertyque a su vez creó otro decorador @score.setter, es responsable de la asignación de atributos para convertirse en un método de selección, por lo que tenemos una operación controlada propiedad:

clase Estudiante (objeto):

    @propiedad
    def anotar (auto):
         retorno self._score

    @ score.setter
    def anotar (auto, valor):
         si  no isinstance (valor, int):
             aumento ValueError ( ' ! puntuación debe ser un entero ' )
         si el valor <0 o valor> 100 :
             aumento ValueError ( ' marcar, debe entre 0 ~ 100! ' )
        self._score = valor

Cuando atribuimos la manipulación, por ejemplo, sabemos que esta propiedad es probable que no expuesto directamente, sino a través de los métodos get y set de lograr.

También puede definir el atributo de sólo lectura, definir método solo captador, no define un método de selección es una propiedad de sólo lectura:

clase Estudiante (objeto):

    @propiedad
    def nacimiento (auto):
         retorno self._birth

    @birth .setter # Establecer las propiedades
     DEF nacimiento (Ser, valor):
        self._birth = valor

    @propiedad
    def edad (auto):
         retorno 2015 - self._birth

Lo anterior birthes una propiedad de lectura y escritura, y agees una propiedad de sólo lectura, ya que agede acuerdo con birthla hora actual se calcula.

resumen

@propertyAmpliamente utilizado en la definición de clase, permitiendo que la persona que llama para escribir un pequeño código, y para garantizar el control de los parámetros necesarios , por lo que el programa se está ejecutando reduce la posibilidad de error.

Supongo que te gusta

Origin www.cnblogs.com/hemengjita/p/12590875.html
Recomendado
Clasificación