python : une classe dans une autre classe

comme la closure est une fonction dans une fonction

a marqué ce sujet comme résolu.

Salut, comment s’appelle le fait d’avoir une classe dans une classe, pourquoi, quand y penser ? un exemple:

app = FastAPI()

class SomeModel(MongoDBModel):
    field1: str


@openapi.patch
class SomeSerializer(Serializer):
    read_only1: str = "const"
    write_only2: int
    not_visible: str = "42"
    class Meta:
        model = SomeModel
        exclude = {"not_visible"}
        write_only_fields = {"write_only2"}
        read_only_fields = {"read_only1"}

@app.get("/", response_model=SomeSerializer.response_model)
async def root(serializer: SomeSerializer):
    model_instance = await serializer.save()
    return model_instance.dict()
+0 -0

Je ne sais pas quel est l’usage canonique en Python, mais en Java on rencontre ces constructions dans deux types de cas principalement :

  • Dans des callbacks de méthodes asynchrones ou de tâches lancées en arrière-plan – beaucoup moins depuis Java 8 qui a des méthodes beaucoup plus lisibles pour faire ce genre de choses.
  • Comme structures de données un peu complexes dans des traitements au sein d’une classe : c’est beaucoup plus lisible qu’un tableau ou qu’une Map.

C’est pas forcément super courant, mais c’est utile parce que ça permet d’imbriquer des données dans l’espace de noms de la classe.

Tu as un exemple d’utilisation typique avec cette classe Meta qui permet de définir des propriétés sur une classe, sans définir d’attributs/méthodes dans la classe elle-même.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte