Wanted to see how having a global time variable turns out. Let the user define a global time variable for the whole class, then all the reference frames initialized from it will use that variable for time only. Unless a time variable is defined, a reference frame won't be initialized (that's why the __new__) and if a time variable is already defined, a new one cant be defined in that session(that's why the set_time method).
Just an idea to ensure all frames work with same notion of time without breaking immutability.