code: def create_bin_method(op_name, klass):
      
      # This function will become the method.
  
      def new_method(self, other):
          if not check_special_methods():
              raise NotImplementedError(
                  'Special method %s called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.' %
                  (op_name, str(self)))
          # This code creates a Deterministic object.
  
          def eval_fun(self, other, op):
              return getattr(self, op)(other)
          return pm.Deterministic(eval_fun,
                                  'A Deterministic returning the value of %s(%s,%s)' % (
                                      op_name, self.__name__, str(other)),
                                  '(' + '_'.join(
                                      [self.__name__,
                                       op_name,
                                       str(other)]) + ')',
                                  {'self': self,
                                   'other': other,
                                   'op': '__' + op_name + '__'},
                                  trace=False,
                                  plot=False)
      # Convert the function into a method for klass.
      new_method.__name__ = '__' + op_name + '__'
      setattr(
          klass,
          new_method.__name__,
          UnboundMethodType(
              new_method,
              None,
              klass))
docs: Creates a new binary special method with only a left version, such as
      A.__eq__(B) <=> A==B, for target class. The method is called __op_name__.