I guess part of my previous comment would mean that expiry_time is part of the __init__, which I think seems reasonable.  A RefreshableCredential object (and subclasses) need to have the concept of expiry_time.