improved subscribe

--HG--
branch : trunk
diff --git a/jinja2/sandbox.py b/jinja2/sandbox.py
index 4b9ac13..c041a06 100644
--- a/jinja2/sandbox.py
+++ b/jinja2/sandbox.py
@@ -118,14 +118,15 @@
     def subscribe(self, obj, argument):
         """Subscribe an object from sandboxed code."""
         is_unsafe = False
-        try:
-            value = getattr(obj, str(argument))
-        except (AttributeError, UnicodeError):
-            pass
-        else:
-            if self.is_safe_attribute(obj, argument, value):
-                return value
-            is_unsafe = True
+        if isinstance(argument, basestring):
+            try:
+                value = getattr(obj, str(argument))
+            except (AttributeError, UnicodeError):
+                pass
+            else:
+                if self.is_safe_attribute(obj, argument, value):
+                    return value
+                is_unsafe = True
         try:
             return obj[argument]
         except (TypeError, LookupError):