Переменная __cached__ автоматически инициализируется в любом модуле.
В любом произвольном модуле:
print(__cached__) # None
__cached__ = 'Hello World!'
print(__cached__) # Hello World!
В чем смысл предварительной инициализации этой переменной с помощью объекта NoneType? Если это зарезервированное ключевое слово, то зачем позволять пользователям изменять его?
__cached__ — атрибут модуля, связанный с импортом. Из документации:
[__cached__] — это путь к любой скомпилированной версии кода (например, байт-компилированному файлу). Для установки этого атрибута файл не обязательно должен существовать; путь может просто указывать на место, где будет существовать скомпилированный файл.
Что касается того, почему это None - я думаю, это потому, что этот атрибут должен существовать, но, поскольку в вашем случае нет скомпилированной версии кода, он просто установлен на None, что означает «неприменимо».