why PyObject* can point to each object in python?
===

in python's source code ,there are some define like this:

 #define PyObject_HEAD     
    int ob_refcnt;               
    struct _typeobject *ob_type;


 #define PyObject_VAR_HEAD               
    PyObject_HEAD                       
    int ob_size; 


typedef struct _object {  
    PyObject_HEAD  
} PyObject;    

typedef struct _object {  
    PyObject_HEAD   
    long ob_ival;   
} PyIntObject;   

typedef struct {   
    PyObject_VAR_HEAD   
} PyVarObject;   
  
The question is, why PyObject* can point to each object(such as PyIntObject, PyVarObject) in python?