Seite 1 von 1

voellig transparenter wrapper

Verfasst: Donnerstag 9. August 2007, 23:51
von Costi
ich muss in build in types eine art flag setzten.
Da sie gegen ``setattr``s "imun" sind brauche ich einen vollkommen unsichtbaren wrapper der attribut zugriffe einfach weiterleitet und korrekt auf type() und dir() reagiert (hab ich was vergessen?)

nun meine frage:
wie implementier ich die zwei letzten punkte?

danke

Re: voellig transparenter wrapper

Verfasst: Donnerstag 9. August 2007, 23:59
von Leonidas
Costi hat geschrieben:wie implementier ich die zwei letzten punkte?
Das Zauberwort heißt "Vererbung".

Verfasst: Freitag 10. August 2007, 00:16
von Costi
hmmmm, ok, irgendwie hab ich statdessen voll das obskure zeugs geschrieben ;-)

Code: Alles auswählen

def __getattribute__(self, attr):
	if attr == 'value' or not attr in dir(self.value):
		return object.__getattribute__(self, attr)
	return getattr(self.value, attr)

bleibt nur noch die type() frage zu klaeren

Code: Alles auswählen

>>> class T(str):
	pass

>>> t = T()
>>> type(t)
<class '__main__.T'>
>>> type(t) == str
False
>>> 

Verfasst: Freitag 10. August 2007, 00:33
von veers
1: Typen vergleicht man mit is
2: Bist du sicher das es nötig ist den Typen zu überprüfen?
3: Falls ja, bist du sicher das du nicht lieber mit isinstance prüfen willst?

Verfasst: Freitag 10. August 2007, 01:00
von Costi
es geht nicht nur darum was ich wie mache (zb ab jetzt isinstance benutzten^^) sondern auch was andere biliotheken machen weil gewrappte objekte auch als parameter an diese weitergegeben werden sollen .
bei einem zusaetzlicher attribut wird es wahrscheinlich nicht zu einem anderen effekt kommen als bei der uebergabe des originals, ein anderes verhalten zu type() is aber schon gefaerlicher

Verfasst: Freitag 10. August 2007, 01:29
von veers
Costi hat geschrieben:es geht nicht nur darum was ich wie mache (zb ab jetzt isinstance benutzten^^) sondern auch was andere biliotheken machen weil gewrappte objekte auch als parameter an diese weitergegeben werden sollen .
bei einem zusaetzlicher attribut wird es wahrscheinlich nicht zu einem anderen effekt kommen als bei der uebergabe des originals, ein anderes verhalten zu type() is aber schon gefaerlicher
Hast du ein konkretes Beispiel?

Verfasst: Freitag 10. August 2007, 08:20
von Leonidas
Costi hat geschrieben:bei einem zusaetzlicher attribut wird es wahrscheinlich nicht zu einem anderen effekt kommen als bei der uebergabe des originals, ein anderes verhalten zu type() is aber schon gefaerlicher
Wenn eine Bibliothek ``type()`` benutzt um Typen zu Prüfen, dann gehört dem Autor eine Beschwerdemail geschrieben.