2017-02-16 2 views
0

statische Methode aufrufen Bitte sehen Sie das folgende Beispiel:Wie durch Bezugnahme in Python

class MyClass(object): 

    @staticmethod 
    def __myStaticMethod(someArgs): 
     pass 

    MY_SPECIAL_METHOD_LIST = [ 
     __myStaticMethod 
    ] 

    @staticmethod 
    def someOtherMethod(): 
     m = MyClass.MY_SPECIAL_METHOD_LIST[0] 
     print(m) 
     m() 

Wenn ich jetzt die Aussage MyClass.someOtherMethod() ich eine Ausnahme erhalten ausführen:

<staticmethod object at 0x7fd672e69898> 
Traceback (most recent call last): 
    File "./test3.py", line 25, in <module> 
    MyClass.someOtherMethod() 
    File "./test3.py", line 21, in someOtherMethod 
    m() 
TypeError: 'staticmethod' object is not callable 

Offensichtlich m eine Referenz enthält, die statische Methode. Aber ich kann diese Methode nicht nennen. Warum? Was muss ich ändern, um diese Methode aufzurufen?

+1

Schau hier: http://stackoverflow.com/questions/12718187/calling-class-staticmethod-within-the-class-body – haffla

+0

@haffla: sehr gut finden. Vielen Dank. –

+0

Interessant. Ich suchte nach einer Antwort, fand diese aber nicht. Danke. –

Antwort

0

Um eine statische Methode innerhalb Ihrer Klasse aufzurufen, müssen Sie sie entpacken. Ändern Sie m() zu m.__func__('params') und Sie werden gut sein.

+0

Danke. Das habe ich gesucht. –

Verwandte Themen