diff --git a/devscripts/lazy_load_template.py b/devscripts/lazy_load_template.py
index 20322e04b2..a3f3fedf9e 100644
--- a/devscripts/lazy_load_template.py
+++ b/devscripts/lazy_load_template.py
@@ -1,16 +1,24 @@
-#!/usr/bin/env python3
 # coding: utf-8
-from __future__ import unicode_literals
-
 import re
 
 
-class LazyLoadExtractor(object):
+class LazyLoadMetaClass(type):
+    def __getattr__(cls, name):
+        return getattr(cls._get_real_class(), name)
+
+
+class LazyLoadExtractor(metaclass=LazyLoadMetaClass):
     _module = None
 
+    @classmethod
+    def _get_real_class(cls):
+        if '__real_class' not in cls.__dict__:
+            mod = __import__(cls._module, fromlist=(cls.__name__,))
+            cls.__real_class = getattr(mod, cls.__name__)
+        return cls.__real_class
+
     def __new__(cls, *args, **kwargs):
-        mod = __import__(cls._module, fromlist=(cls.__name__,))
-        real_cls = getattr(mod, cls.__name__)
+        real_cls = cls._get_real_class()
         instance = real_cls.__new__(real_cls)
         instance.__init__(*args, **kwargs)
         return instance