No puedo entender lo que hace la precedencia de abajo significa que en el contexto de __getattribute__()
método especial y Descriptors
Descriptores: precedencia de acceso a través Atributo __getattribute() __
que leen esto bajo la topic("Precedence") - under topic ("Desriptors")
del libro Core Python Programming 3 veces, todavía no puede pasar ... ¿Alguien puede explicar cuáles son estas precedencias y dónde se usan?
- Atributos de clase
- descriptores de datos
- atribuye Instancia
- descriptores no son de datos
- Defaulting a
__getattr__()
También leí la python documentation, donde me encontré con la siguiente declaración: -
Para enlaces de instancia, la precedencia de la invocación del descriptor depende de en los métodos de descriptores definidos. Un descriptor puede definir cualquier combinación de
__get__()
,__set__()
y__delete__()
. Si lo hace no define__get__()
, entonces el acceso al atributo devolverá el objeto descriptor a menos que haya un valor en el diccionario de instancia del objeto. Si el descriptor define__set__()
y/o__delete__()
, es un descriptor de datos; si no define ninguno, es un descriptor que no es de datos. Normalmente, los descriptores de datos definen__get__()
y__set__()
, mientras que los descriptores que no son de datos solo tienen el método__get__()
.Los descriptores de datos con
**__set__()**
y**__get__()**
definidos siempre anulan una redefinición en un diccionario de instancias. Por el contrario, los descriptores que no son de datos pueden anularse por instancias.Los métodos de Python (incluidos
staticmethod()
yclassmethod()
) son implementados como descriptores no de datos. En consecuencia, las instancias pueden redefinir y anular métodos. Esto permite instancias individuales a adquirir comportamientos que difieren de otras instancias de la misma clase.
¿Alguien puede dar un pequeño ejemplo para explicar de qué se trata el first paragraph
? ¿Qué significa decir "override a redefinition in an instance dictionary
"?
Relacionado: [¿Qué regla de lenguaje de Python permite encontrar el descriptor primero?] (Http://stackoverflow.com/questions/1865902/), [Descriptores y atributos proporcionados por python] (http://stackoverflow.com/questions/10536539 /) –
@PiotrDobrogost .. Gracias Piotr por esos enlaces ... :) –