Quelle est la manière pythonique de gérer les objets volumineux? Dans mon exemple, je pourrais avoir une grande classe créant une instance avec de nombreux attributs ou je pouvais regrouper certains d'entre eux ensemble (voir classe voiture et moteur de classe):Diviser un gros objet en sous-objets plus petits dans l'instance
class Car(object):
color = "red"
def __init__(self, num_wheels):
self.burst = Motor(self)
self.wheels = num_wheels
for i in range(self.wheels):
setattr(self, "wheel{}".format(i), Wheel(self, i))
def _query(self, value):
print "Get Serial Data: {}".format(value)
class Motor(object): # Object is loaded only once in Car instance
def __init__(self, top):
self._top = top
def temperature(self):
return self._top._query("GET MOTOR TEMP")
def rpm(self):
return self._top._query("GET MOTOR RPM")
class Wheel(object): # Object could be loaded many times in Car instance
def __init__(self, top, number):
self._top = top
self._number = number
def temperature(self):
return self._top._query("GET WHEEL TEMP {}".format(self._number))
def rpm(self):
return self._top._query("GET WHEEL RPM {}".format(self._number))
Je pense que cela est encore plus logique, lorsque la voiture a plus d'une roue, car je pourrais ajouter plus de roues.
Mais depuis moteur est jamais utilisé plus d'une fois et jamais utilisé ailleurs où, est-il mieux le style de les mettre dans la classe du véhicule:
class Car(object):
color = "red"
def __init__(self, num_wheels):
# Add wheels or other stuff
def _query(self, value):
print "Get Serial Data: {}".format(value)
def motor_temperature(self):
return self._query("GET MOTOR TEMP")
def motor_rpm(self):
return self.._query("GET MOTOR RPM")
je vais devoir accéder Car._query() de la La classe de roue et/ou de moteur et mon objet réel de vie contient environ 40 attributs et méthodes que je pourrais regrouper dans 4-5 sous-instances. Impossible de trouver beaucoup sur ce sujet sur le web.