2016-07-13 7 views
0

大きなオブジェクトを扱うにはどうしたらいいですか?私の例では、私は多くの属性またはIで1つのインスタンスを作成する一つの大きなクラスを持っている可能性ができたグループ一緒にそれらのいくつか(クラス車とクラスモーターを参照してください):大きなオブジェクトをインスタンス内の小さなサブオブジェクトに分割します

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)) 

私は時に車これも、より理にかなっていると思いますホイールを増やすことができるので、複数のホイールがあります。から

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") 

私はCar._queryを(アクセスする必要があります):

しかし、モーターが複数回、決してそれがカークラスにそれらを置くために、より良いスタイルであり、それ以外の使用に使用されることはありませんので、車輪および/またはモータークラスと私の実生活オブジェクトには約4つのサブインスタンスでグループ化できる約40の属性とメソッドが含まれています。ウェブ上でこのトピックについて多くを見つけることができませんでした。

答えて

0

多数のインスタンスを使用する場合は、slotsを使用してメモリフットプリントを減らすことができます。

関連する問題