次のアプリケーションのオブジェクト指向プログラミングで適切なパターンを見つけるのに苦労しています。
変更が必要なオブジェクトがあるとします。オブジェクトが家で、そのプロパティの価格が変更/追加される可能性があります。dimension_x
この変更は、プロパティおよびに基づいていますdimension_y
。しかし、価格を設定するには、 と を持つ他のクラス (この場合はハウス) のインスタンスを比較する必要が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
したがって、基本的にクラス Houses は、dimension_x と dimension_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}...]
次に、価格プロパティを計算します。
この種のオブジェクト間の相互作用に対処する最善の方法は何ですか?