How to use get_template_part always relatively to the file I’m using it in?

There is only one function get_template_directory() in wordpress, which can give you path of your theme. But there is no any function which give directory path of folder inside your theme.

There are two way to get the directory path of your template dynamic, and whenever your folder structure changed, you just need to update at only one place:

1) You can create your custom config variable to store the template directory path and whenever you want to include your template, you can get path from config variable and include it:

in wp-config.php:

<?php define('TEMPLATE_DIR_PATH','path to your template path'); ?>

and in your file(in which you want to include template) you can include as:

<?php get_template_part( TEMPLATE_DIR_PATH.'/header', 'default' ); ?>

2) Another way is to create custom function in function.php file of your active theme which will return the path of your template directory:

in function.php

<?php
function get_template_file_directory_path(){
        return "path to your template path"
}
?>

and in your file(in which you want to include template) you can include as:

<?php get_template_part( get_template_file_directory_path().'/header', 'default' ); ?>

Hope this will help you.