class_docstr: Manage a VipsObject.
class_docstr_tok: ["Manage","a","VipsObject","."]
code: def _get_pspec(self, name):
      # logger.debug('VipsObject.get_typeof: self = %s, name = %s',
      #              str(self), name)
  
      # this is pretty slow, and used a lot, so we cache results
      # this cache makes the libvips test suite about 10% faster
      class_pointer = self.gobject.g_type_instance.g_class
      cache = VipsObject._pspec_cache
      if class_pointer not in cache:
          cache[class_pointer] = {}
      if name not in cache[class_pointer]:
          pspec = ffi.new("GParamSpec **")
          argument_class = ffi.new("VipsArgumentClass **")
          argument_instance = ffi.new("VipsArgumentInstance **")
          result = vips_lib.vips_object_get_argument(
              self.vobject,
              _to_bytes(name),
              pspec,
              argument_class,
              argument_instance,
          )
  
          if result != 0:
              return None
  
          cache[class_pointer][name] = pspec[0]
  
      return cache[class_pointer][name]
  
file_path: pyvips/pyvips/vobject.py
imports: from __future__ import division
  import logging
  import pyvips
  from pyvips import ffi, vips_lib, gobject_lib, Error, _to_bytes, _to_string
label_desc: Use image node_id 3 for calling the VipsObject obj's underlying member method code with example usage: obj._get_pspec(name) and returns: cache, None