只是想改善我在Python中的OO使用,並且很好奇組合。Python組合
比方說你有以下類:
Class Breakfast(object):
__init__(self, eggs):
self.eggs = eggs
@property
def yolk(self):
return eggs.yolk
@property
def yolk_colour(self):
return eggs.yolk.colour
OR
return.eggs.yolk_colour
Class Eggs(object):
__init__(self, yolk):
self.yolk = yolk
@property
def yolk_colour(self):
return self.yolk.colour
Class Yolk(object):
__init__(self, colour):
self.colour = colour
並初始化它們
eggs = Eggs(Yolk("yellow"))
bkfast = Breakfast(eggs)
當你要訪問的蛋黃,是它更好地鏈它作爲
bkfast.eggs.yolk
或通過屬性訪問它
bkfast.yolk
第二個版本直接使用較少的鏈接,雖然仍然在幕後。而第一個告訴你到底發生了什麼。有沒有一個首選的方法呢?
編輯:我已經把蛋黃屬性,它有一種顏色。如果你想從早餐中得到那種顏色,最好有一個叫做雞蛋屬性的早餐,或者直接進入蛋黃本身?或者它在幕後是不是很重要?
http://en.wikipedia.org/wiki/Law_of_Demeter - 使用後一選項 –
http://www.python.org/dev/peps/pep-0020/ Python的禪:Explicit比隱含更好。簡單勝於複雜。 – Cilyan
我認爲你應該使用getter方法。 – 2rs2ts