я должен использовать декоратор, чтобы обеспечить подкласс для нескольких классов в Python - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть подкласс baz, который должен быть включен как в foo, так и в bar,

class foo():
   def __init__()
     pass

   class baz:
     pass


class bar():
   def __init__()
     pass

   class baz:
     pass

Я полагаю, что в этой ситуации декоратор может обернуть и foo, и bar, предоставляя baz каждому, ноя не могу найти примеры написания такого декоратора.

указатели?

1 Ответ

0 голосов
/ 07 декабря 2010

Чтобы повторить комментарии, не используйте этот метод для создания объектов администратора для 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'
...