2016-08-02 5 views
-1

Ein Python-Skript benötigt eine benutzerspezifische Konfiguration, um "Standard" -Zuweisungen zu überschreiben (z. B. path = "local/path/"). Dies könnte durch Importieren der Attribute eines benutzerdefinierten Moduls mit from custom_settings import * erfolgen. Ich möchte diejenigen ausgeben, die vom benutzerdefinierten Modul geändert werden.Attribute aus importiertem Modul mit Stern erhalten

Von innerhalb custom_settings können seine Attribute mit dir(), z.B. ", ".join((a for a in dir() if not a.startswith("__"))). Wie kann dies vom importierenden Skript aus geschehen, wenn die importierten Modulattribute an den vorhandenen Namespace gebunden sind?

+0

Liebe downvoter, was scheint das Problem zu sein? – handle

Antwort

0

Dies kann nicht die sauberste Lösung sein, und es scheint schmerzlich überflüssig, aber man kann immer einfach:

from custom_settings import * 
import custom_settings 
overridden = ", ".join(a for a in dir(custom_settings) if not a.startswith("__")) 
+0

Danke, aber das funktioniert nicht, da es die Attribute im vorhandenen Namespace nicht überschreibt. I.e. Es wird 'custom_settings.path', aber nicht' path' erstellt. – handle

+0

@handle Right. Sie können * beide * –

+0

Ah. Jetzt bekomme ich das überflüssig. – handle