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

voellig transparenter wrapper

Beitragvon Costi » 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: voellig transparenter wrapper

Beitragvon Leonidas » 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

Beitragvon Costi » 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:

Beitragvon veers » 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

Beitragvon Costi » 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:

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

Beitragvon Leonidas » 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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]