2013-07-28 10 views
6

Mein Code muss eine innere Klasse haben und ich möchte die Instanz dieser inneren Klasse erstellen, ohne die Instanz der äußeren Klasse zu erstellen.
Wie geht das in Python? In Java können wir die innere Klasse als statisch definieren, aber ich weiß nicht, wie man eine innere Klasse in Python statisch macht. Ich weiß, dass wir für Methoden @staticmethod Dekorateur verwenden können.Statische innere Klasse in Python

class Outer: 
    def __init__(self): 
     print 'Instance of outer class is created' 

    class Inner: 
     def __init__(self): 
      print 'Instance of Inner class is created' 
+1

Aus Neugier, warum brauchen Sie das? –

+0

Emil H: zum Beispiel für alles? : D Nesting ist weit verbreitet, es gibt Ihnen mehr Kontrolle über die Kapselung und welche Schnittstelle/Konstanten/Helfer, die Sie für den Endbenutzer bereitstellen, während Sie immer noch den "Black Box" -Code behalten –

Antwort

6

Die Klasse Inner danach bei der Definition der Klasse Outer und es existiert in seiner Klasse Namensraum definiert ist. Also nur Outer.Inner().

1

Sie müssen nichts Besonderes tun. siehe es einfach direkt:

instance = Outer.Inner() 
0

Nicht sicher, wonach Sie suchen. Sie können es einfach als Klassenvariable oder als globale (Modul-) Variable erstellen

class Outer: 
    def __init__(self): 
     print 'Instance of outer class is created' 

    class Inner: 
     def __init__(self): 
      print 'Instance of Inner class is created' 

    i = Inner() # as class varaible 

i1 = Outer.Inner() # as module varaible 
Verwandte Themen