2010-07-15 16 views
0

在django中,我想引用其方法被調用的類,其中方法本身在其abstract ancestor中實現。Django - 內省django在其抽象祖先中實現的方法中的模型?

class AbstractFather(models.Model): 
    class Meta: 
     abstract = True 
    def my_method(self): 
     # >>> Here <<< 

class Child(AbstractFather): 
    pass 

我希望做類似:

isinstance(instance, Child): 

當然,我不知道my_method其子模型被稱爲先天之內。

+0

你能澄清?你是說self.childmethod()不起作用?你以這種方式構建它的原因是什麼? – eruciform 2010-07-15 12:36:48

+0

my_method中的self實際上是孩子的實例,因爲AbstractFather是... abstract :) – Jonathan 2010-07-15 14:50:13

回答

0

瑣碎的工作:

class AbstractFather(models.Model): 
    class Meta: 
     abstract = True 
    def my_method(self,some_instance): 
     print isinstance(some_instance,self.__class__) 

class Child(AbstractFather): 
    pass 
0

你爲什麼這麼說?你絕對可以。 AbstractFather是一個抽象模型,所以它永遠不會被實例化,因此您可以始終確定無論調用my_method是否是子類的一個實例。你給的語法應該可以工作。

編輯那麼你究竟想要與之進行比較呢? selfmy_method將永遠是相關的實例,其類將永遠是AbstractFather的特定子類。你需要檢查什麼?

+0

我的意思是我不應該在AbstractFather中硬編碼Child,因爲實際上有Child1,Child2等......在這個意義上先驗AbstractFather並不知道它的孩子。 – Jonathan 2010-07-15 14:11:09