我有以下问题,我将试图用下面的例子来说明。在
class Brick():
def __init__(self):
self.weight = 1
class House():
def __init__(self, number_bricks):
self.bricks = [Brick() for i in range(number_bricks)]
def get_weight(self):
return reduce(lambda x,y: x+y, [brick.weight for brick in self.bricks])
但是现在假设我创建了一种新的砖,StrongBrick,这样我就生成了一个房子,一个子类StrongHouse,其中StrongBrick在StrongHouse中的作用与Brick在house中的作用完全相同。我怎么就不能在这个类中重新输入定义?在
所以基本思想是,我如何将一个由一些对象组成的类更改为同一个类,但又由原来成员对象的子类组成?在
非常感谢你能给我的任何帮助。在
一个不错的模式是:
另一种方法是创建一个工厂函数,并使用默认值为
^{pr2}$brick_type
使用参数:当然,所有这些对象都只是
House
的实例,尽管我在这里命名了StrongHouse
,因此它类似于类名。在有多种方法可以做到这一点。可以使相关的Brick类成为House类的属性:
或者,您可以通过在建造房屋时要使用的Brick类:
^{pr2}$你可以建个工厂(砖厂?)并将其传递给
House.__init__()
。在如您所见,子类化
House
甚至不需要使用不同类型的砖来建造房屋。在相关问题 更多 >
编程相关推荐