[Python-de] Re: AW: import von modules
Gerhard Häring
gerhard.haering at opus-gmbh.net
Wed Nov 13 15:31:28 EST 2002
In article <IOEEIPCHIDIHEFEJLJKKAENFDCAA.josef.cihal at irm.at>, Josef Cihal wrote:
> weil unter UNIX geben keine win32 Prozese. es hat mir nur
> interesiert ob eine Moglichkeit gibts nur bestimmte DEFINEs aus
> einem Modul zu importieren...
Schon, nur wird alles, was im importieren Modul auf Modulebene
passiert (incl. dem import der win32-spezifischen Module) beim Import
trotzdem passieren.
Eine übliche Strategie ist es, plattformspezifisches in eigene Module
zu kapseln. Ansonsten artet das oft in #ifdef-Hell aus.
Sagen wir mal, du möchstest ein Modul filesystemtools machen, das
unter allen Betriebssystemen funktioniert, aber unter Windows ein paar
Zusatzfunktionalitäten hat, welche die win32-Extensions brauchen, du
könntest das dann so realisieren:
[win32fs.py]
import win32api
...
[filesystemtools.py]
try:
from win32fs import *
except ImportError:
pass
... Funktionen, die auf allen Plattformen funktionieren ...
Hier noch ein abschreckendes realistisches Beispiel für Cross-Platform
(und Cross-Implementation Python) mit #ifdef-Hell (argh!):
[calendartools.py]
import os
JYTHON = (os.name == "java")
if JYTHON:
# zxDateTime importieren und so zurechtbiegen, dass es kompatibler mit
# mxDateTime ist.
from com.ziclix.python.datetime import DateTime, DateTimeDelta
DateTimeType = DateTime
# [...]
def DateTimeFrom(s): [...]
def TimeFrom(s): [...]
class Time(DateTimeDelta):
def __init__(self, hours, minutes, seconds):
DateTimeDelta.__init__(self, 0, hours, minutes, seconds)
else:
from mx.DateTime import DateTime, DateTimeFrom, DateTimeDelta, \
DateTimeType, Time, TimeFrom, DateFrom
> -----Ursprungliche Nachricht-----
> [Snip b0rken Outhouse quoting]
--
Gerhard Häring
OPUS GmbH München
Tel.: +49 89 - 889 49 7 - 32
http://www.opus-gmbh.net/
More information about the Python-de
mailing list