Here, "OK" means of course AYOR (at your own risk), but otherwise there are no foreseeable problems if one avoids obvious clashes with existing attributes names.
Skyfield objects - especially planets - typically have a limited number of attributes. I am frequently writing short scripts to extract numerical data that I save as text and use later. These are essentially 'disposable' scripts as I rarely use them more than once or twice and never ever share them.
When I write more durable code, I certainly create my own container objects.
My Question: It seems to be working well for me, so within this specific context, is there anything that can go wrong besides a conflict in attribute names?
from skyfield.api import load
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
eph = load('de421.bsp')
earth = eph['earth']
sun = eph['sun']
ts = load.timescale()
t = ts.utc(2016, 1, np.linspace(0, 366, 1000))
# SLOPPY WAY: just add them directly
earth.pos = earth.at(t).position.km
sun.pos = sun.at(t).position.km
earth.r = np.sqrt(((earth.pos-sun.pos)**2).sum(axis=0))
earth.peri = earth.r.min()
earth.apo = earth.r.max()
print earth.peri, earth.apo, earth.pos.shape
# BETTER WAY: tedious but more cautious
uhoh = dict()
ep = earth.at(t).position.km
sp = sun.at(t).position.km
r = np.sqrt(((ep-sp)**2).sum(axis=0))
uhoh['pos'] = ep
uhoh['r'] = r
uhoh['peri'] = r.min()
uhoh['apo'] = r.max()
earth.uhoh = uhoh
print earth.uhoh['peri'], earth.uhoh['apo'], earth.uhoh['pos'].shape
returns:
147100175.99 152103762.948 (3, 1000)
147100175.99 152103762.948 (3, 1000)