2010-12-06 79 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'