[Python-de] Re: Funktion ueberschreiben?

"Peter J. Holzer" <[email protected]>
Newsgroups gmane.comp.python.general.german
Organization LUGA
Message-ID <[email protected]>
On 2022-12-03 09:53, Stefan Ram <[email protected]> wrote:
>=?UTF-8?Q?Mike_M=c3=bcller?= <[email protected]> writes:
>>import duplicity.dup_time
>>def timetopretty(timeinseconds):
>>     """Return pretty version of time"""
>>     return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(timeinseconds))
>>duplicity.dup_time.timetopretty = timetopretty
>>ganz zu Beginn des Programms sollte funktionieren. Wichtig ist, dass
>>duplicity.dup_time nicht schon vorher importiert wird. Sonst müsstest du es
>>vorher aus sys.modules entfernen.
>
>   Diese Einschränkung verstehe ich nicht ganz. Ich dachte, daß sich
>   das "monkey patching" ab dem Zeitpunkt seiner Ausführung auswirkt.

Das kommt darauf an, was importiert wird. 

Nach einem 
    import duplicity.dup_time
referenziert duplicity.dup_time.timetopretty das Objekt, auf das die
Variable timetopretty in dup_time gerade verweist, und wenn die geändert
wird, hat das den offensichtlichen Effekt

Aber mit
    from duplicity.dup_time import timetopretty 
wird eine neue lokale Variable timetopretty angelegt, die auf das Objekt
zu diesem Zeitpunkt verweist. Wenn man später
duplicity.dup_time.timetopretty ändert, zeigt das lokale timetopretty
immer noch auf das ursprüngliche Objekt.

        hp
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.