Bonjour,

J'ai cette classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
class A:
    with some_context():
        x = f(0)
        y = f(1)
Pour laquelle il est très important que f() soit appelée au sein du context manager ouvert.

Je voudrais automatiser ce with à l'aide d'une métaclasse, de sorte que ceci soit équivalent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
class B(meta=M):    
    x = f(0)
    y = f(1)
Si j'essaie de décorer B, c'est trop tard : ses attributs x,y ont été évalués, et f() a été appelée sans contexte.

Est-ce qu'une métaclasse me donne un hook suffisement tôt (avant que f() soit appelée) pour ajouter mon contexte ? Il faudrait que cela ait lieu avant que les attributs de classe soient construits !

Merci d'avance !