处理大对象的pythonic方法是什么?在我的示例中,我可以让一个大类创建一个具有许多属性的实例,或者我可以将其中一些属性组合在一起(参见 Car 类和 Motor 类):
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))
我认为这更有意义,当汽车有多个轮子时,我可以添加更多轮子。
但是由于 Motor 从未使用过一次以上并且从未在其他地方使用过,因此将它们放入 Car 类中是否更好:
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")
我将不得不从 Wheel 和/或 Motor 类访问 Car._query(),而我的现实生活对象包含大约 40 个属性和方法,我可以将它们分组为 4-5 个子实例。在网上找不到太多关于这个主题的信息。