J'ai écrit une fonction en Python qui est censée fonctionner de manière similaire à une fabrique en Java, car elle installe la classe correcte pour les paramètres donnés et renvoie cette instance.Renvoyer une instance d'objet Python d'une classe interne d'une fonction
Un exemple minimal avec une seule classe dans la fonction serait la suivante:
def create_object(param):
class SpecialClass(ParentClass):
def func(self, param):
doSomething()
class_instance = SpecialClass(param)
return class_instance
Je peux utiliser parfaitement cet objet lorsque j'appelle cette fonction de l'extérieur. Venant d'un arrière-plan Java, je suppose que cela a quelque chose à voir avec le typage dynamique en Python mais je ne sais toujours pas pourquoi cela fonctionne réellement. L'étendue où cette classe est connue n'est-elle pas juste au sein de la fonction elle-même?
Votre question n'est pas claire. Pourquoi * ne fonctionnerait-il pas? Et pourquoi cela aurait-il quelque chose à voir avec le typage dynamique? –
Oui, qu'est-ce que cela a à voir avec le typage dynamique? Aussi, @DanielRoseman, il veut dire qu'en Java, la portée de la classe et des objets à l'intérieur d'une fonction est seulement à l'intérieur ... mais Florian dit que cela ne semble pas être le cas ici –
Je ne vois toujours pas Qu'est-ce que cela a à voir avec la portée. Vous renvoyez un objet de la fonction, et cet objet peut être transmis partout où vous le souhaitez, même en Java. –