测试一个类是否从另一个类继承

98 投票
2 回答
62423 浏览
提问于 2025-04-16 15:31

这个问题更偏向于Python,而不是Django。我想为一个函数写个测试,这个函数可以动态生成一个Django表单,表单的字段是我自己设置的。

def quiz_form_factory(question):
    properties = {
        'question': forms.IntegerField(widget=forms.HiddenInput, initial=question.id),
        'answers': forms.ModelChoiceField(queryset=question.answers_set)
    }
    return type('QuizForm', (forms.Form,), properties)

我想测试一下,返回的QuizForm类是否是从forms.Form这个类继承来的。

大概是这样的:

self.assertTrue(QuizForm isinheritedfrom forms.Form)  # I know this does not exist

有没有什么方法可以做到这一点呢?

2 个回答

15

可以使用内置的 issubclass 函数。比如:

issubclass(QuizForm, forms.Form)

这个函数会返回一个 bool 值,所以你可以直接在 self.assertTrue() 中使用它。

160

使用 issubclass(myclass, parentclass) 这个函数。

在你的例子中:

self.assertTrue( issubclass(QuizForm, forms.Form) )

撰写回答