Pybind for Function?

Looking at this tutorial here:

How exactly do i write a pybind binding for this? Eg.

#include <torch/torch.h>

using namespace torch::autograd;

class MulConstant : public Function<MulConstant> {
  static torch::Tensor forward(AutogradContext *ctx, torch::Tensor tensor, double constant) {
    // ctx is a context object that can be used to stash information
    // for backward computation
    ctx->saved_data["constant"] = constant;
    return tensor * constant;

  static tensor_list backward(AutogradContext *ctx, tensor_list grad_outputs) {
    // We return as many input gradients as there were arguments.
    // Gradients of non-tensor arguments to forward must be `torch::Tensor()`.
    return {grad_outputs[0] * ctx->saved_data["constant"].toDouble(), torch::Tensor()};

How do i make this work with Python / Pytorch