### Class

# GObject Object

since: 2.0

#### Description

    class GObject.Object : GObject.TypeInstance
    {
      /* No available fields */
    }

The base object type.

`GObject` is the fundamental type providing the common attributes and methods for all object types in GTK, Pango and other libraries based on GObject. The `GObject` class provides methods for object construction and destruction, property access methods, and signal support. Signals are described in detail [here][gobject-Signals].

For a tutorial on implementing a new `GObject` class, see How to define and implement a new GObject. For a list of naming conventions for GObjects and their methods, see the GType conventions. For the high-level concepts behind GObject, read Instantiatable classed types: Objects.

Since GLib 2.72, all `GObject`s are guaranteed to be aligned to at least the alignment of the largest basic GLib type (typically this is `guint64` or `gdouble`). If you need larger alignment for an element in a `GObject`, you should allocate it on the heap (aligned), or arrange for your `GObject` to be appropriately padded. This guarantee applies to the `GObject` (or derived) struct, the `GObjectClass` (or derived) struct, and any private data allocated by `G_ADD_PRIVATE()`.

Available since: 2.0

#### Descendants

- GBinding
- GBindingGroup
- GInitiallyUnowned
- GSignalGroup
- GTypeModule

#### Constructors

###### g_object_new

Creates a new instance of a `GObject` subtype and sets its properties.

since: 2.0

###### g_object_new_valist

Creates a new instance of a `GObject` subtype and sets its properties.

since: 2.0

###### g_object_new_with_properties

Creates a new instance of a `GObject` subtype and sets its properties using the provided arrays. Both arrays must have exactly `n_properties` elements, and the names and values correspond by index.

since: 2.54

###### g_object_newv

Creates a new instance of a `GObject` subtype and sets its properties.

deprecated: 2.54 since: 2.0

#### Functions

###### g_object_compat_control

No description available.

since: 2.0

###### g_object_interface_find_property

Find the `GParamSpec` with the given name for an interface. Generally, the interface vtable passed in as `g_iface` will be the default vtable from g_type_default_interface_ref(), or, if you know the interface has already been loaded, g_type_default_interface_peek().

since: 2.4

###### g_object_interface_install_property

Add a property to an interface; this is only useful for interfaces that are added to GObject-derived types. Adding a property to an interface forces all objects classes with that interface to have a compatible property. The compatible property could be a newly created `GParamSpec`, but normally `g_object_class_override_property()` will be used so that the object class only needs to provide an implementation and inherits the property description, default value, bounds, and so forth from the interface property.

since: 2.4

###### g_object_interface_list_properties

Lists the properties of an interface.Generally, the interface vtable passed in as `g_iface` will be the default vtable from g_type_default_interface_ref(), or, if you know the interface has already been loaded, g_type_default_interface_peek().

since: 2.4

#### Instance methods

###### g_object_add_toggle_ref

Increases the reference count of the object by one and sets a callback to be called when all other references to the object are dropped, or when this is already the last reference to the object and another reference is established.

since: 2.8

###### g_object_add_weak_pointer

Adds a weak reference from weak_pointer to `object` to indicate that the pointer located at `weak_pointer_location` is only valid during the lifetime of `object`. When the `object` is finalized, `weak_pointer` will be set to `NULL`.

since: 2.0

###### g_object_bind_property

Creates a binding between `source_property` on `source` and `target_property` on `target`.

since: 2.26

###### g_object_bind_property_full

Complete version of g_object_bind_property().

since: 2.26

###### g_object_bind_property_with_closures

Creates a binding between `source_property` on `source` and `target_property` on `target`, allowing you to set the transformation functions to be used by the binding.

since: 2.26

###### g_object_connect

A convenience function to connect multiple signals at once.

since: 2.0

###### g_object_disconnect

A convenience function to disconnect multiple signals at once.

since: 2.0

###### g_object_dup_data

This is a variant of `g_object_get_data()` which returns a ‘duplicate’ of the value. `dup_func` defines the meaning of ‘duplicate’ in this context, it could e.g. take a reference on a ref-counted object.

since: 2.34

###### g_object_dup_qdata

This is a variant of `g_object_get_qdata()` which returns a ‘duplicate’ of the value. `dup_func` defines the meaning of ‘duplicate’ in this context, it could e.g. take a reference on a ref-counted object.

since: 2.34

###### g_object_force_floating

This function is intended for `GObject` implementations to re-enforce a [floating][floating-ref] object reference. Doing this is seldom required: all `GInitiallyUnowneds` are created with a floating reference which usually just needs to be sunken by calling g_object_ref_sink().

since: 2.10

###### g_object_freeze_notify

Increases the freeze count on `object`. If the freeze count is non-zero, the emission of “notify” signals on `object` is stopped. The signals are queued until the freeze count is decreased to zero. Duplicate notifications are squashed so that at most one `GObject::notify` signal is emitted for each property modified while the object is frozen.

since: 2.0

###### g_object_get

Gets properties of an object.

since: 2.0

###### g_object_get_data

Gets a named field from the objects table of associations (see g_object_set_data()).

since: 2.0

###### g_object_get_property

Gets a property of an object.

since: 2.0

###### g_object_get_qdata

This function gets back user data pointers stored via g_object_set_qdata().

since: 2.0

###### g_object_get_valist

Gets properties of an object.

since: 2.0

###### g_object_getv

Gets `n_properties` properties for an `object`. Obtained properties will be set to `values`. All properties must be valid. Warnings will be emitted and undefined behaviour may result if invalid properties are passed in.

since: 2.54

###### g_object_is_floating

Checks whether `object` has a [floating][floating-ref] reference.

since: 2.10

###### g_object_notify

Emits a “notify” signal for the property `property_name` on `object`.

since: 2.0

###### g_object_notify_by_pspec

Emits a “notify” signal for the property specified by `pspec` on `object`.

since: 2.26

###### g_object_ref

Increases the reference count of `object`.

since: 2.0

###### g_object_ref_sink

Increase the reference count of `object`, and possibly remove the [floating][floating-ref] reference, if `object` has a floating reference.

since: 2.10

###### g_object_remove_toggle_ref

Removes a reference added with g_object_add_toggle_ref(). The reference count of the object is decreased by one.

since: 2.8

###### g_object_remove_weak_pointer

Removes a weak reference from `object` that was previously added using g_object_add_weak_pointer(). The `weak_pointer_location` has to match the one used with g_object_add_weak_pointer().

since: 2.0

###### g_object_replace_data

Compares the user data for the key `key` on `object` with `oldval`, and if they are the same, replaces `oldval` with `newval`.

since: 2.34

###### g_object_replace_qdata

Compares the user data for the key `quark` on `object` with `oldval`, and if they are the same, replaces `oldval` with `newval`.

since: 2.34

###### g_object_run_dispose

Releases all references to other objects. This can be used to break reference cycles.

since: 2.0

###### g_object_set

Sets properties on an object.

since: 2.0

###### g_object_set_data

Each object carries around a table of associations from strings to pointers. This function lets you set an association.

since: 2.0

###### g_object_set_data_full

Like `g_object_set_data()` except it adds notification for when the association is destroyed, either by setting it to a different value or when the object is destroyed.

since: 2.0

###### g_object_set_property

Sets a property on an object.

since: 2.0

###### g_object_set_qdata

This sets an opaque, named pointer on an object. The name is specified through a `GQuark` (retrieved e.g. via g_quark_from_static_string()), and the pointer can be gotten back from the `object` with `g_object_get_qdata()` until the `object` is finalized. Setting a previously set user data pointer, overrides (frees) the old pointer set, using `NULL` as pointer essentially removes the data stored.

since: 2.0

###### g_object_set_qdata_full

This function works like g_object_set_qdata(), but in addition, a void (*destroy) (gpointer) function may be specified which is called with `data` as argument when the `object` is finalized, or the data is being overwritten by a call to `g_object_set_qdata()` with the same `quark`.

since: 2.0

###### g_object_set_valist

Sets properties on an object.

since: 2.0

###### g_object_setv

Sets `n_properties` properties for an `object`. Properties to be set will be taken from `values`. All properties must be valid. Warnings will be emitted and undefined behaviour may result if invalid properties are passed in.

since: 2.54

###### g_object_steal_data

Remove a specified datum from the object’s data associations, without invoking the association’s destroy handler.

since: 2.0

###### g_object_steal_qdata

This function gets back user data pointers stored via `g_object_set_qdata()` and removes the `data` from object without invoking its `destroy()` function (if any was set). Usually, calling this function is only required to update user data pointers with a destroy notifier, for example:

since: 2.0

###### g_object_take_ref

If `object` is floating, sink it. Otherwise, do nothing.

since: 2.70

###### g_object_thaw_notify

Reverts the effect of a previous call to g_object_freeze_notify(). The freeze count is decreased on `object` and when it reaches zero, queued “notify” signals are emitted.

since: 2.0

###### g_object_unref

Decreases the reference count of `object`. When its reference count drops to 0, the object is finalized (i.e. its memory is freed).

since: 2.0

###### g_object_watch_closure

This function essentially limits the life time of the `closure` to the life time of the object. That is, when the object is finalized, the `closure` is invalidated by calling `g_closure_invalidate()` on it, in order to prevent invocations of the closure with a finalized (nonexisting) object. Also, `g_object_ref()` and `g_object_unref()` are added as marshal guards to the `closure`, to ensure that an extra reference count is held on `object` during invocation of the `closure`. Usually, this function will be called on closures that use this `object` as closure data.

since: 2.0

###### g_object_weak_ref

Adds a weak reference callback to an object. Weak references are used for notification when an object is disposed. They are called “weak references” because they allow you to safely hold a pointer to an object without calling `g_object_ref()` (g_object_ref() adds a strong reference, that is, forces the object to stay alive).

since: 2.0

###### g_object_weak_unref

Removes a weak reference callback to an object.

since: 2.0

#### Signals

###### GObject.Object::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

since: 2.0

#### Class structure

    struct GObjectObjectClass {
      GTypeClass g_type_class;
      GObject* (* constructor) (
        GType type,
        guint n_construct_properties,
        GObjectConstructParam* construct_properties
      );
      void (* set_property) (
        GObject* object,
        guint property_id,
        const GValue* value,
        GParamSpec* pspec
      );
      void (* get_property) (
        GObject* object,
        guint property_id,
        GValue* value,
        GParamSpec* pspec
      );
      void (* dispose) (
        GObject* object
      );
      void (* finalize) (
        GObject* object
      );
      void (* dispatch_properties_changed) (
        GObject* object,
        guint n_pspecs,
        GParamSpec** pspecs
      );
      void (* notify) (
        GObject* object,
        GParamSpec* pspec
      );
      void (* constructed) (
        GObject* object
      );

    }

The class structure for the GObject type.

    // Example of implementing a singleton using a constructor.
    static MySingleton *the_singleton = NULL;

    static GObject*
    my_singleton_constructor (GType                  type,
                              guint                  n_construct_params,
                              GObjectConstructParam *construct_params)
    {
      GObject *object;

      if (!the_singleton)
        {
          object = G_OBJECT_CLASS (parent_class)->constructor (type,
                                                               n_construct_params,
                                                               construct_params);
          the_singleton = MY_SINGLETON (object);
        }
      else
        object = g_object_ref (G_OBJECT (the_singleton));

      return object;
    }

###### Class members

`g_type_class: GTypeClass`

  The parent class.

`constructor: GObject* (* constructor) ( GType type, guint n_construct_properties, GObjectConstructParam* construct_properties )`
  No description available.
`set_property: void (* set_property) ( GObject* object, guint property_id, const GValue* value, GParamSpec* pspec )`
  No description available.
`get_property: void (* get_property) ( GObject* object, guint property_id, GValue* value, GParamSpec* pspec )`
  No description available.
`dispose: void (* dispose) ( GObject* object )`
  No description available.
`finalize: void (* finalize) ( GObject* object )`
  No description available.
`dispatch_properties_changed: void (* dispatch_properties_changed) ( GObject* object, guint n_pspecs, GParamSpec** pspecs )`
  No description available.
`notify: void (* notify) ( GObject* object, GParamSpec* pspec )`
  No description available.
`constructed: void (* constructed) ( GObject* object )`
  No description available.

#### Virtual methods

###### GObject.ObjectClass.constructed

No description available.

since: 2.0

###### GObject.ObjectClass.dispatch_properties_changed

No description available.

since: 2.0

###### GObject.ObjectClass.dispose

No description available.

since: 2.0

###### GObject.ObjectClass.finalize

No description available.

since: 2.0

###### GObject.ObjectClass.get_property

No description available.

since: 2.0

###### GObject.ObjectClass.notify

Emits a “notify” signal for the property `property_name` on `object`.

since: 2.0

###### GObject.ObjectClass.set_property

No description available.

since: 2.0

#### Class methods

###### g_object_class_find_property

Looks up the `GParamSpec` for a property of a class.

since: 2.0

###### g_object_class_install_properties

Installs new properties from an array of `GParamSpecs`.

since: 2.26

###### g_object_class_install_property

Installs a new property.

since: 2.0

###### g_object_class_list_properties

Get an array of `GParamSpec`* for all properties of a class.

since: 2.0

###### g_object_class_override_property

Registers `property_id` as referring to a property with the name `name` in a parent class or in an interface implemented by `oclass`. This allows this class to “override” a property implementation in a parent class or to provide the implementation of a property from an interface.

since: 2.4