2010-12-06 9 views
0

私はfooとbarの両方に含まれる必要があるサブクラスbazを持っています。私はデコレータを使用して、Pythonで複数のクラスにサブクラスを提供する必要があります

class foo(): 
    def __init__() 
    pass 

    class baz: 
    pass 


class bar(): 
    def __init__() 
    pass 

    class baz: 
    pass 

この状況で、デコレータはfooとbarの両方をラップすることができます。そのようなデコレータを書くための例を見つけるようです。

ポインタ?

+2

これらの両方が同じ内部クラスを必要とする理由についての詳細はありませんが、それは言うのは難しいです。あなたは彼らが両方ともこのクラスのインスタンスを必要としているだけではないと確信していますか? –

+0

あなたが実際に内部クラスを必要とする可能性は非常に低い場合でも、デコレータの仕事は間違いなく... –

+0

djangoの各モデルはクラスであり、内部が必要です 管理者、私はちょうど私がコードを保存すると思ったデコレータを使用することで –

答えて

0

はジャンゴの後に、より大きなバージョンにアップグレードすると、Djangoのための管理オブジェクトを作成するためではない使用この方法:)

FWIWあなたが何かを見えるよう求め何をすべきかデコレータを行いますlike:

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' 
関連する問題