2010-12-06 3 views
0

Ich habe eine Unterklasse baz, die sowohl in foo und bar enthalten sein muss,sollte ich einen Dekorateur eine Unterklasse, um mehrere Klassen in Python zur Verfügung zu stellen

class foo(): 
    def __init__() 
    pass 

    class baz: 
    pass 


class bar(): 
    def __init__() 
    pass 

    class baz: 
    pass 

ich in dieser Situation ein Dekorateur vorstellen könnte wickeln um beide foo und bar, baz jedem zur verfügung stellend, aber ich kann nicht scheinen, irgendwelche Beispiele für das Schreiben solch eines Dekorators zu finden.

Zeiger?

+2

Ohne genauere Angaben, warum beide die gleiche innere Klasse benötigen, ist es schwer zu sagen. Sind Sie sicher, dass sie nicht nur eine Instanz dieser Klasse benötigen? –

+0

Definitiv keine Arbeit für Dekorateure, selbst in dem höchst unwahrscheinlichen Fall, dass du wirklich eine innere Klasse brauchst ... –

+0

in django ist jedes Modell eine Klasse und muss einen inneren Admin haben, ich dachte nur, ich würde Code speichern durch Verwendung eines Dekorators –

Antwort

0

die Kommentare Um es zu wiederholen, nicht Verwendung dieser Methode Admin-Objekte für Django zu erstellen, ein Upgrade auf eine spätere, größere Version von Django :)

FWIW ein Dekorateur zu tun, was Sie etwas suchen gefragt würde wie:

def add_baz(klass): 
    def adder(): 
     instance = klass() 

     class Baz: 
      bazvar='This is an attribute of Baz' 

     instance.Baz = Baz 

     return instance 
    return adder 

@add_baz 
class Foo(): 
    def __init__(self): 
     pass 

>>> myfoo = Foo() 
>>> myfoo.Baz 
<class __main__.Baz at 0x9f213ec> 
>>> myfoo.Baz.bazvar 
'This is an attribute of Baz' 
Verwandte Themen