Seite 1 von 1

import a.b

Verfasst: Mittwoch 13. Dezember 2006, 20:35
von droptix
Ich möchte gern von einem Modul A nur die Funktion/Methode b importieren. Üblicherweise geht das über

Code: Alles auswählen

from A import b
Das Dumme ist nur, dass ich anschließend direkt mit

Code: Alles auswählen

b(args)
arbeiten muss. Um auch langfristig den Überblick zu behalten, woher b() eigentlich stammt, wäre es mir lieber, stattdessen mit

Code: Alles auswählen

A.b(args)
zu arbeiten. Das geht nach meinem aktuellen Wissensstand nur, wenn ich über import A das komplette Modul importiere. Ich hätte aber gern trotzdem nur die eine Funktion/Methode.

Geht das und wenn ja, wie sieht die import-Anweisung dafür aus?

Verfasst: Mittwoch 13. Dezember 2006, 20:48
von birkenfeld
Was passt dir an

Code: Alles auswählen

import A
A.b(args)
nicht?

Hint:

Code: Alles auswählen

from A import b
ist äquivalent zu

Code: Alles auswählen

import A as _tmpname
b = A.b
del _tmpname
Es muss immer das komplette Modul kompiliert und ausgeführt werden, da ja Python vorher nicht weiß, was am Schluss an den Namen "b" gebunden ist.

Ressourcen sparen

Verfasst: Mittwoch 13. Dezember 2006, 20:51
von droptix
Mir kam die Idee, dass man damit ein paar Ressourcen sparen könnte, v.a. wenn man was für Kleingeräte entwickelt... so dass eben nicht das komplette Modul eingebunden werden muss.

Laut deiner Äquivalenzregel ist es dann aber ganz offensichtlich völlig egal, also freunde ich mich mit import A an.

Danke!

Verfasst: Mittwoch 13. Dezember 2006, 20:54
von birkenfeld
Da hilft es nur, viele kleine Module anstatt eines großen zu haben.

Re: Ressourcen sparen

Verfasst: Mittwoch 13. Dezember 2006, 22:10
von Joghurt
droptix hat geschrieben:Mir kam die Idee, dass man damit ein paar Ressourcen sparen könnte, v.a. wenn man was für Kleingeräte entwickelt... so dass eben nicht das komplette Modul eingebunden werden muss.
Muss es eh... Die Methode b muss ja erstmal gefunden werden.

Ich denke, du optimierst da an der falschen Stelle.

nur eine Idee

Verfasst: Donnerstag 14. Dezember 2006, 08:58
von droptix
Es war nur eine Idee :P