gpt4 book ai didi

python - 在 Python 中用子类替换成员对象

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:32 24 4
gpt4 key购买 nike

我有以下问题,我将尝试用下面的例子来说明。

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])

但现在假设我创建了一种新的 Brick,StrongBrick,这样我就 build 了一个房子,一个子类 StrongHouse,其中 StrongBrick 在 StrongHouse 中扮演的角色与 Brick 在 House 中扮演的角色完全相同。我怎样才能以一种好的方式做到这一点(不仅仅是重新键入所有类定义)?

所以基本思想是,如何将由一些对象组成的类更改为同一个类,但由原始成员对象的子类组成?

非常感谢您能给我的任何帮助。

最佳答案

您可以拥有一个工厂(砖厂?)并将其传递给 House.__init__()

class Brick(object): pass

class StrongBrick(Brick): pass

class House(object):
def __init__(self, brick_factory, num_bricks):
self.bricks = [brick_factory() for i in range(num_bricks)]

house = House(Brick, 10000)
strong_house = House(StrongBrick, 10000)

如您所见,子类化 House 甚至不需要用不同类型的砖 block build 房屋。

关于python - 在 Python 中用子类替换成员对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18389399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com