我一直在努力为以下应用程序在面向对象编程中找到一个好的模式。
假设您有一个需要修改的对象 - 也许,该对象是一栋房子,其房产价格将被修改/添加。此修改基于属性dimension_x
和dimension_y
. 但是为了设定价格,我们需要比较其他类(在本例中为 Houses)中具有dimension_x
和的实例dimension_y
。
class Houses(object):
def __init__(self, dimension_x=None, dimension_y=None):
self.dimension_x = dimension_x
self.dimension_y = dimension_y
class City(object):
def __init__(self, houses_without_price=None):
self.houses_without_price = houses_without_price
self.houses = []
def set_dimensions(self, house1_without_price, house2_with_price):
# calculate dimension_x, dimension_y and set these properties
# in an instance of Houses
def set_price(self, house1):
# based on dimension_x and dimension_y from our instance of Houses,
# add a price to the instances of self.houses_without_price
所以基本上我们的房屋类只是维度_x和维度_y的存储。显然,我可以改用字典。然而,houses_without_price 和字典之间的交互往往过于复杂。例如:
d = [{'object': house_without_price_1, 'dimension_x': 20, 'dimension_y': 34},
{'object': house_without_price_2, 'dimension_x': 43, 'dimension_y': 55}...]
然后计算价格属性。
处理对象之间的这种交互的最佳方法是什么?