2016-12-02 5 views
1

Versucht, eine Klasse in sich selbst zu verweisen. Für z.B.Python: Wie verweist man eine Klasse in sich selbst?

class Test: 
    FOO_DICT = {1 : Test.bar} # NameError: name 'Test' is not defined 

    @staticmethod 
    def bar(): 
     pass 

Macht diese Verwendung Sinn? Gibt es bessere Alternativen? Danke!

+0

Verwenden Sie einfach 'bar 'selbst. – DyZ

+0

@DYZ Das würde nicht funktionieren, da 'bar' noch nicht definiert worden wäre. –

+0

Wie unten vorgeschlagen, ändern Sie die Reihenfolge der Definitionen. – DyZ

Antwort

3

Wenn Sie das Wörterbuch in der Klasse sein wollen: die Funktion zuerst definieren und entfernen Test:

class Test: 
    @staticmethod 
    def bar(): 
     pass 

    FOO_DICT = {1: bar} 
+0

Wahrscheinlich sollte die Reihenfolgeabhängigkeit vermieden werden, aber es scheint kein besseres Muster zu geben. – cheng

0

Sie könnten FOO_DICT = {1 : Test.bar} außerhalb der Klasse wie folgt bewegen:

class Test: 
    @staticmethod 
    def bar(): 
     pass 
Test.FOO_DICT = {1: Test.bar} 
+1

Dies verletzt die Kapselung von Klassen und sollte vermieden werden. – DyZ

Verwandte Themen