2010-12-06 45 views
0

我有一個子類巴茲,需要被包含在這兩個foo和酒吧提供了一個子類多個類別,我應該使用一個裝飾在Python

class foo(): 
    def __init__() 
    pass 

    class baz: 
    pass 


class bar(): 
    def __init__() 
    pass 

    class baz: 
    pass 

我在這種情況下,想象一個裝飾可以換圍繞着foo和bar,向每個人提供baz,但是我似乎無法找到任何寫這樣一個裝飾器的例子。

指針?

+2

沒有更多的細節,爲什麼這兩個都需要相同的內部類,這很難說。你確定他們不僅僅需要這個類的一個實例嗎? – 2010-12-06 23:47:59

回答

0

要重申的意見,使用這種方法來創建Django管理對象,升級到更高,更高版本的Django的:)

FWIW一個裝飾做你問什麼就看什麼如:

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' 
相關問題