2016-12-01 3 views
0

ich auf eine Funktion zu arbeiten, wo bereits eine Anwendung erstellt wird, aber ich kann nicht bearbeitenPython Call-Methode von einem externen Funktion der Klasse

class mainProject(): 
    def __init__(self, screen): 
      module1 = importlib.import_module(extension) 
      module1.openBox() 


    def boxIsOpen(self): 
      ....... 

Ich versuche boxIsOpen() in meine benutzerdefinierte Funktion OPENBOX auszuführen () im Erweiterungsmodul.

Es ist möglich, das zu tun? Ich versuche, die Klasse in die Funktion reinitialisiert, aber es ist nicht die vorherige Funktion. Das Schlüsselwort "caller" funktioniert nicht wirklich.

Dank

+1

Gibt es einen Grund, dass Sie versuchen, 'module1' indisde' mainProject .__ init __() 'zu importieren? Wenn Sie es dort importieren, ist es für die Funktion 'boxIsOpen' nicht zugänglich. Sie sollten es wahrscheinlich auf Dateiebene importieren. – danielunderwood

+0

@ danielu13, danke für deine Antwort, es ist nur ein kleines Beispiel. Ich werde nicht die volle .py senden. Ich drehe und bearbeite nur einen Teil, um das Wesentliche zu behalten. Wie zum Beispiel die ImportLib und meine externe Funktion. –

+1

Wenn Sie sagen, die Anwendung ist bereits erstellt ... Ich habe das Gefühl, Sie tun etwas sehr, sehr schlecht. Können Sie bestätigen, dass Sie versuchen, zur Laufzeit Add-Funktionen für eine Python-Klasse zu bearbeiten? Dies sollte (fast) nie für die meisten Leute notwendig sein ... – Lunaweaver

Antwort

0

Allgemeinen in der Mitte des Code importieren, lassen allein in einem Konstruktor nicht ratsam.

import extension 
class mainProject(): 
    def __init__(self, screen): 
     extension.openBox() 

    def boxIsOpen(self): 
     ... 

Sollte den Trick tun.

Wenn Sie das Original nicht anders anfassen können, sollten Sie die Unterklasse mainProject verwenden.

Verwandte Themen