Index: urlresolvers.py
===================================================================
--- urlresolvers.py	(revision 7739)
+++ urlresolvers.py	(working copy)
@@ -206,14 +206,17 @@
         self.urlconf_name = urlconf_name
         self.callback = None
         self.default_kwargs = default_kwargs or {}
-        self._reverse_dict = {}
 
     def __repr__(self):
         return '<%s %s %s>' % (self.__class__.__name__, self.urlconf_name, self.regex.pattern)
 
     def _get_reverse_dict(self):
-        if not self._reverse_dict and hasattr(self.urlconf_module, 'urlpatterns'):
-            for pattern in reversed(self.urlconf_module.urlpatterns):
+        if not hasattr(self, '_reverse_dict'):
+            # FIXME: now we'll fail if no URL patterns are defined. I
+            # think that's a good thing, though.
+            # Was: and hasattr(self.urlconf_module, 'urlpatterns'):
+            self._reverse_dict = {}
+            for pattern in reversed(self.get_url_patterns()):
                 if isinstance(pattern, RegexURLResolver):
                     for key, value in pattern.reverse_dict.iteritems():
                         self._reverse_dict[key] = (pattern,) + value
@@ -228,7 +231,7 @@
         match = self.regex.search(path)
         if match:
             new_path = path[match.end():]
-            for pattern in self.urlconf_module.urlpatterns:
+            for pattern in self.get_url_patterns():
                 try:
                     sub_match = pattern.resolve(new_path)
                 except Resolver404, e:
@@ -256,9 +259,8 @@
             return self._urlconf_module
     urlconf_module = property(_get_urlconf_module)
 
-    def _get_url_patterns(self):
+    def get_url_patterns(self):
         return self.urlconf_module.urlpatterns
-    url_patterns = property(_get_url_patterns)
 
     def _resolve_special(self, view_type):
         callback = getattr(self.urlconf_module, 'handler%s' % view_type)
