[Python-de] Kennt eine Funktion ihren Namen?

Robert Rottermann robert at redcor.ch
Fri Feb 15 10:49:05 EST 2002


Besten Dank,
Mein Problem ist, dass ich nicht für alle Sprachen eine Funktion haben
möchte (vieleicht probierts jemand mit Suhaeli das ich dann nicht
implementiert habe). Ausserdem wir die Funktion von Word über Webdav
aufgerufen (ich will in Zope unterschiedlich Dokumente "vortäuschen"),
deshalb kann ich keine Parameter übergeben.

ich bin zu folgendem Lösungansatz gekommen (ich finde Detlefs Vorschlag
jedoch eleganter):
class lang:
    def __init__(self, l, fun) :
        self.l = l
        self.fun = fun
    def __call__(self):
        self.fun(self.l)

class abc:
    def __init__(self):
       # werden "ad hoc" generiert
        self.ge = lang('ge', self.sprache)
        self.fr = lang('fr', self.sprache)

    def sprache(self, lang):
        print lang

c = abc()
c.fr()
c.ge()

----- Original Message -----
From: "Martin v. Loewis" <martin at v.loewis.de>
To: <python-de at starship.python.net>
Sent: Friday, February 15, 2002 1:00 AM
Subject: Re: [Python-de] Kennt eine Funktion ihren Namen?


"Robert Rottermann" <robert at redcor.ch> writes:

> ich möchte eine funktion "überladen", d.h. ssie unter verschiedenen
> Namen aufrufen. Je nach Namen soll ein parameter anders gesetzt
> sein.

Das geht so nicht. Ein Objekt (beispielsweise eine Funktion) kann
unter verschiedenen Namen gebunden sein; es handelt sich jedoch stets
um das gleiche Objekt.

> def sprache(lang='ge'):
>   print lang
>
> franz = sprache
>
> franz() sollte "fr" ausgeben.
>
> Kann ich das machen (und wie).

Ich empfehle

franz = lambda:return sprache('fr')

oder

def franz():
  return sprache('fr')

Ciao,
Martin
_______________________________________________
Python-de maillist  -  Python-de at starship.python.net
http://starship.python.net/mailman/listinfo/python-de





More information about the Python-de mailing list