Articles of descriptor de

Descripción de Python vs propiedad

Posible duplicado: ¿Cuándo y por qué puedo asignar una instancia de una clase de descriptor a un atributo de clase en Python en lugar de usar una propiedad? Estoy confundido en cuanto a cuándo usar una propiedad frente a un descriptor. Leí que una propiedad es un descriptor especializado. ¿Puede alguien por favor publicar cómo […]

python, __slots__, y “el atributo es de solo lectura”

Quiero crear un objeto en Python que tenga algunos atributos y quiero protegerme de usar accidentalmente el nombre de atributo incorrecto. El código es el siguiente: class MyClass( object ) : m = None # my attribute __slots__ = ( “m” ) # ensure that object has no _m etc a = MyClass() # create […]

Creación de cadenas de documentación dinámicas en el descriptor de Python

Estoy intentando generar algunas definiciones de clase dinámicamente (para envolver una extensión de C ++). El siguiente descriptor funciona bien, excepto cuando trato de acceder a la cadena de documentos para un campo usando help (), proporciona la documentación predeterminada para el descriptor en lugar del campo en sí. Sin embargo, cuando hago ayuda (nombre […]

¿Cómo decoro un método de instancia con otra clase en Python 2.7?

En Python 2.7 me gustaría decorar una test método de instancia en la clase Foo con un decorador que también es una clase llamada FooTestDecorator . A partir de la pregunta del usuario Chirstop y la guía Descriptor Howto de los documentos de Python 2, creé este ejemplo. Parece que hay un problema, sin embargo, […]

Máximo error de profundidad de recursión con getattr

Tengo este codigo class NumberDescriptor(object): def __get__(self, instance, owner): name = (hasattr(self, “name”) and self.name) if not name: name = [attr for attr in dir(owner) if getattr(owner,attr) is self][0] self.name = name return getattr(instance, ‘_’ + name) def __set__(self,instance, value): name = (hasattr(self, “name”) and self.name) if not name: owner = type(instance) name = [attr […]

¿Se puede usar un método como método estático o método de instancia?

Me gustaría poder hacer esto: class A(object): @staticandinstancemethod def B(self=None, x, y): print self is None and “static” or “instance” AB(1,2) A().B(1,2) Esto parece ser un problema que debería tener una solución simple, pero no puedo pensar o encontrar una.

¿Cómo funcionan los descriptores predefinidos en funciones?

Las funciones de Python tienen descriptores. Creo que en la mayoría de los casos no debería usar esto directamente, pero quiero saber cómo funciona esta función. Probé un par de manipulaciones con tales objetos: def a(): return ‘x’ a.__get__.__doc__ ‘descr.__get__(obj[, type]) -> value’ ¿Cuál es el objeto y cuál es el tipo? >>> a.__get__() TypeError: […]

python3: enlace del método a la instancia de clase con .__ get __ (), funciona, pero ¿por qué?

Sé que si desea agregar un método a una instancia de clase no puede hacer una tarea simple como esta: >>> def print_var(self): # method to be added print(self.var) >>> class MyClass: var = 5 >>> c = MyClass() >>> c.print_var = print_var esto de hecho causaría que print_var comportara como una función normal, por […]

Decorador de memoización del método de instancia reseteable de Python

Estoy intentando construir un decorador para un método de instancia de una clase que memorice el resultado. (Esto se ha hecho un millón de veces antes). Sin embargo, me gustaría tener la opción de poder restablecer la memoria caché memorizada en cualquier momento (por ejemplo, si algo en el estado de la instancia cambia, lo […]

Cómo implementar __iadd__ para una propiedad de Python

Estoy tratando de crear una propiedad de Python donde la adición in situ se maneja mediante un método diferente al de recuperar el valor, agregar otro valor y reasignar. Entonces, para una propiedad x en un objeto o , ox += 5 debería funcionar de manera diferente a ox = ox + 5 El valor […]