Подтвердить что ты не робот

Проверьте, если класс унаследован от другого

Этот вопрос более связан с 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

Есть ли способ сделать это?

4b9b3361

Ответ 2

Все, что вам нужно сделать, это использовать issubclass:

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

Ответ 3

Используйте встроенную функцию issubclass. например.

issubclass(QuizForm, forms.Form)

Он возвращает bool, поэтому вы можете использовать его непосредственно в self.assertTrue()

Ответ 4

Проверьте issubclass(subclass,baseclass) встроенный метод. Это должно быть именно то, что вам нужно.