def A():
def B():
#do something
a = A()
a.B()
¿Por qué no es posible lo anterior (un código tan simple) en Python? ¿Existe una solución "pitonica" (legible, no sorprendente, no hacky) que no convierta a A() en una clase?¿Por qué Python no puede acceder a una subfunción desde el exterior?
Editar 1: Lo anterior me fue explicado que B es local para A, por lo tanto, solo existe mientras A se esté evaluando. Entonces, si lo hacemos global (y no lo sobreescribamos), entonces, ¿por qué no funciona?
def A():
def B():
#do something
return A()
a = A()
a.B()
Dice que está devolviendo un objeto 'NoneType'.
Por desgracia, es inútil, ya que para inicializar 'A.B' es necesario llamar' A() 'al menos una vez. :( – prokher
@prokher es necesario llamar a A para incluso crear una función anidada. Y será una función diferente cada vez que llame a A. Esa es la única razón para tener una función anidada en primer lugar. –