2010-02-02 471 views
1

首先我是一個蟒蛇新手。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 2010-02-02 21:43:40

回答

2

請讓customBaseModelAdmin繼承自ModelAdmin。您仍然可以覆蓋BaseModelAdmin中的方法。

但當然也可能是ModelAdmin也覆蓋了這種方法。我會看看這些類的源代碼,以真正知道那裏發生了什麼。

+0

我已經看了源代碼...我認爲你的建議是正確的,但我必須找到如何以正確的方式覆蓋.... 謝謝。 – 2010-02-02 22:03:14

+0

完成!非常感謝你! – 2010-02-03 16:25:28

2

爲什麼不只是customBaseModelAdmin子類的ModelAdmin?

+0

,因爲我想保留ModelAdmin的原始版本(即Django提供的版本)。 – 2010-02-02 21:46:22

+1

@Giovanni Di Milia:子類化並不意味着原始類被破壞;) – 2010-02-02 21:49:07

+0

是的,但是我怎麼能爲ModelBrm for customBaseModelAdmin繼承?我的意思是......你能舉個例子嗎? – 2010-02-02 22:06:05

0

你不喜歡這樣:

class customModelAdmin(customBaseModelAdmin): 
    etc