Is it "OK" to just start adding attributes to Skyfield objects?
<p>Here, "<em>OK</em>" means of course AYOR (at your own risk), but otherwise there are no foreseeable problems if one avoids obvious clashes with existing attributes names.</p>

<p><a href="http://rhodesmill.org/skyfield/" rel="nofollow">Skyfield</a> 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. <em>These are essentially 'disposable' scripts</em> as I rarely use them more than once or twice and <em>never ever</em> share them.</p>

<p>When I write more durable code, I certainly create my own container objects.</p>

<p><strong>My Question:</strong> It seems to be working well for me, so within <em>this specific context</em>, is there anything that can go wrong <em>besides a conflict in attribute names</em>? </p>

<pre><code>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
</code></pre>

<p>returns:</p>

<pre><code>147100175.99 152103762.948 (3, 1000)
147100175.99 152103762.948 (3, 1000)
</code></pre>