2012-03-28 3 views
2

Wie verknüpfe ich einen Deskriptor, nachdem eine Klasse bereits definiert wurde?Python Metaprogrammierung von Deskriptoren: Wie man einen Deskriptor nach der Klassendefinition hinzufügt?

In einem normalen Descriptor Szenario würde ich dies nur tun:

class X: 
    d = Descriptor() 

und dann, wenn Descriptor.__get__(self,obj,kls) genannt wird, ist der zweite Parameter eine Instanz von X und alle glücklich und wunderbar.

Aber was, wenn X ist schon wie so definiert:

class X: pass 

Wie füge ich dann einen Beschreiber nach der Tat (und es richtig funktionieren haben!)? Alle meine Versuche bekommen keine richtige Zuordnung zur Klasse

Ich mache das, weil ich eine Reihe von Attributen habe, die ich in einer DRY-Weise hinzufügen möchte, und ich möchte, dass sie cached_properties sind (ein Deskriptor, den ich verwende um die Werte für jede von ihnen zu notieren)

Antwort

3
X.d = Descriptor() 

Das ist alles was Sie brauchen.

+0

* schmatzt die Stirn * danke !! – prior

Verwandte Themen