code: def fromTerm(cls, term):
          
  
          if isinstance(term, Term):
              term = term.handle
          elif not isinstance(term, (c_void_p, int)):
              raise ArgumentTypeError((str(Term), str(int)), str(type(term)))
  
          f = functor_t()
          if PL_get_functor(term, byref(f)):
              # get args
              args = []
              arity = PL_functor_arity(f.value)
              # let's have all args be consecutive
              a0 = PL_new_term_refs(arity)
              for i, a in enumerate(range(1, arity + 1)):
                  if PL_get_arg(a, term, a0 + i):
                      args.append(getTerm(a0 + i))
  
              return cls(f.value, args=args, a0=a0)
docs: Create a functor from a Term or term handle.