Basket
とItem
という2つのクラスがあるとします。各バスケットにはアイテムのリストが含まれています。私はバスケットにアイテムのid
を保管するか、直接アイテムオブジェクトを保管することができます。どちらが最善の解決策であり、なぜ(メモリ使用量、コビネスなどの面で)?OOP:異なるクラスのオブジェクト間の関係をコード化する最良の方法
CASE
class Basket(object):
def __init__(self, basket_name):
self._name = basket_name
self._items = []
def add_item(self, item_id)
self._items.append(item_id)
class Item(object):
def __init__(self, item_id):
self._id= item_id
>>> b = Basket('My_Basket')
>>> i1 = Item(1)
>>> i2 = Item(2)
>>> b.add_item(1)
>>> b.add_item(2)
CASEのB
class Basket(object):
def __init__(self, basket_name):
self._name = basket_name
self._items = []
def add_item(self, item)
self._items.append(item)
class Item(object):
def __init__(self, item_id):
self._id= item_id
>>> b = Basket('My_Basket')
>>> i1 = Item(1)
>>> i2 = Item(2)
>>> b.add_item(i1)
>>> b.add_item(i2)
私はケースBを好むでしょう。そうでなければ、誰が仕事をしているのですか?それらのIDでオブジェクトをルックアップするためのデータベースとして機能する他のクラスを維持しなければならないのですか?オブジェクトとしてオブジェクトを渡すことは意味的に意味があります。この場合、 'Basket'に' Item'を置くことは、別のレベルの間接指定を追加するよりも「オブジェクト指向」です。 – CoryKramer
コードサンプルは同等ではありません。スニペットAで 'Basket'インスタンスを持つ' Item'インスタンスにアクセスする方法はありませんが、スニペットBでも可能です。 –
Pythonのすべての変数は参照であり、スペースの使用について心配することなくオブジェクトを直接格納できます。納得のいかんについては、あなたの必要がすべてです。 –