Трудно классифицировать каждый язык в 'слабо' или 'сильно' введенный - это - больше континуума. Но по сравнению с другими языками C довольно со строгим контролем типов. Каждый объект имеет тип времени компиляции, и компилятор сообщит (громко) при выполнении чего-то с объектом, который его тип не позволяет Вам сделать. Например, Вы не можете вызвать функции с неправильными типами параметров, структура/члены профсоюза доступа, которые не существуют, и т.д.
, Но существует несколько слабых мест. Одна главная слабость является преобразованиями типа - они по существу говорят, что Вы собираетесь быть слоняющимися без дела с типами объектов, и компилятор должен быть тихим (когда это может). void*
также другая слабость - это - универсальный указатель на неизвестный тип, и когда Вы используете их, необходимо быть дополнительны осторожный, что Вы делаете правильную вещь. Компилятор не может статически проверить большую часть использования void*
. void*
может также быть преобразован в указатель на любой тип без броска (только в C, не в C++), который является другой слабостью.
class SubSectionAdmin(admin.ModelAdmin):
# ...
def change_view(self, request, object_id, extra_context=None):
self.exclude = ('field', )
return super(SubSectionAdmin, self).change_view(request, object_id, extra_context)