diff --git a/sublimedsl/keymap.py b/sublimedsl/keymap.py
index <HASH>..<HASH> 100644
--- a/sublimedsl/keymap.py
+++ b/sublimedsl/keymap.py
@@ -260,11 +260,6 @@ class Context():
         self.match_all = None
         self._parent = parent
 
-        for op in self._OPERATORS:
-            func = partial(self._operator, op)
-            func.__name__ = op
-            setattr(self.__class__, op, func)
-
     def all(self):
         """ Require the test to succeed for all selections.
 
@@ -306,6 +301,11 @@ class Context():
         self.operand = operand
         return self._parent or self
 
+    def __getattr__(self, name):
+        if name in self._OPERATORS:
+            return partial(self._operator, name)
+        raise AttributeError
+
     def __str__(self):
         return jsonify(self, indent=None)
Fix wrongly defined operator methods in Context

This is equivalent to method_missing in Ruby. A better solution would be
to correctly define the methods dynamically on the class, but that's
unnecessarily complicated. Python <I> added handy function partialmethod
that would be ideal for this case, but I should keep sublimedsl
compatible at least with <I>.