general:objetos anidados y setattr y getattr (sí, es esa época)
class Inner(object):
def __init__(self, x):
self.x = x
class Outer(object):
def __init__(self, z):
self.inner = Inner(z)
o = Outer(10)
Ahora, quiero que el objeto externo a comportarse de forma transparente - los atributos establecidos en o
deberían ser enumerados en o.inner
, lo mismo para leyendo: o.something
debería devolver, de hecho, el valor de o.inner.sommething
. Algo así como un proxy o un relevo.
__getattr__
para Outer
parece simple & obras:
def __getattr__(self, item):
return getattr(self, item)
¿cómo iba a manejar __setattr__
? No pude encontrar nada que no causara un error de recursión y hacerme odiarme a mí mismo.
¿O es el concepto mismo defectuoso?
(Otro enfoque Probé estaba haciendo Outer
una subclase de Inner
- esto realmente no jugar estéticamente la presente @classmethods
, por no mencionar el IDE se perdería dentro de esos -. No es capaz de resolver algunos atributos Dejemos eso por ahora, ¿quizás?)
¿Querías 'self.inner = Inner (z)'? Además, ¿su método getattr devuelve datos de Inner()? Tal como está escrito, parece que solo haría referencia a Outer. – gfortune
Sí, regresa. Corregido ambos, gracias! – ntl0ve