voellig transparenter wrapper

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Donnerstag 9. August 2007, 23:51

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
cp != mv
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 9. August 2007, 23:59

Costi hat geschrieben:wie implementier ich die zwei letzten punkte?
Das Zauberwort heißt "Vererbung".
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 10. August 2007, 00:16

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
>>> 
cp != mv
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Freitag 10. August 2007, 00:33

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?
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 10. August 2007, 01:00

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
cp != mv
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Freitag 10. August 2007, 01:29

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?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 10. August 2007, 08:20

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten