En una de mis clases, tengo una serie de propiedades que hacen cosas muy similares para obtener y configurar. Así que recopiló los argumentos a property
en una función de fábrica:Subclassing `property` de Python
def property_args(name):
def getter(self):
# do something
return getattr(self, '_' + name)
def setter(self, value)
# do something
setattr(self, '_' + name, value)
return getter, setter
class MyClass(object):
def __init__(self):
self._x = None
x = property(*property_args('x')) # obviously there's more than one of these IRL
Sin embargo, he descubierto desde entonces que property
es, de hecho, una clase, y la subclasificación que sería perfecto para esto. No puedo encontrar nada en la documentación que explique lo que necesito sobrescribir (y las firmas de argumentos de __init__
, etc.), y realmente no quiero tener que buscar el código fuente de C para ello. ¿Alguien sabe dónde puedo encontrar esta información?
Como referencia, la implementación de C se puede encontrar aquí: http://hg.python.org/cpython/file/tip/Objects/descrobject.c – nneonneo
@nneonneo: ¡Gracias! El gran bloque de comentarios en la línea 1228 es la respuesta. Si quieres escribir eso en una respuesta completa, entonces lo aceptaré. –
poorsod puede responder su propia pregunta :) –