2010-02-02 4 views
1

Прежде всего, я новичок в python.Python: как наследовать от двух классов?

Я играю с Django, и я пытаюсь расширить некоторые классы.

Сейчас я нахожусь в такой ситуации:

У меня есть новый класс

customBaseModelAdmin(admin.options.BaseModelAdmin): 
    #override a method of BaseModelAdmin 

, и я хочу написать еще один класс

customModelAdmin(customBaseModelAdmin): 

что явно наследует customBaseModelAdmin, но имеет те же методы стандарта ModelAdmin. Но, поскольку стандарт ModelAdmin наследует стандарт BaseModelAdmin, как я могу это сделать?

Я попытался с определением

class customModelAdmin(customBaseModelAdmin, admin.options.ModelAdmin): 

, но он не работает.

Есть ли у вас какие-либо предложения?

Спасибо,

Джованни

+3

Почему это не работает? Если вы получили сообщение об ошибке, отправьте его. – ebo

ответ

2

Просто позвольте customBaseModelAdmin унаследовать от ModelAdmin. Вы все же можете переопределить метод от BaseModelAdmin.

Но, конечно, это может быть так, что ModelAdmin также отменяет этот метод. Я бы посмотрел исходный код этих классов, чтобы действительно знать, что там происходит.

+0

Я уже посмотрел на исходный код ... Я думаю, ваше предложение правильно, но я должен найти, как правильно переопределить .... Спасибо. –

+0

Сделано! Большое спасибо! –

2

Почему не просто подкласс ModelAdmin для customBaseModelAdmin?

+0

, потому что я хочу сохранить исходную версию ModelAdmin (то есть предоставленную Django). –

+1

@Giovanni Di Milia: подклассификация не означает, что исходный класс уничтожен;) –

+0

Да, но как я могу подклассифицировать ModelAdmin для customBaseModelAdmin? Я имею в виду ... можете ли вы привести пример? –

0

Вы делаете это так:

class customModelAdmin(customBaseModelAdmin): 
    etc 
Смежные вопросы