我应该使用装饰器为python中的多个类提供子类

时间:2010-12-06 23:46:26

标签: python django decorator

我有一个子类baz,需要包含在foo和bar中,

class foo():
   def __init__()
     pass

   class baz:
     pass


class bar():
   def __init__()
     pass

   class baz:
     pass

我想在这种情况下,装饰者可以环绕foo和bar,为每个提供baz,但我似乎无法找到任何编写这样的装饰器的例子。

指针?

1 个答案:

答案 0 :(得分:0)

重申这些评论,不要使用此方法为Django创建Admin对象,升级到更高版本的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'