我正在制作一个Spyfall游戏,一个所有玩家都在某个位置的游戏,他们的角色取决于他们所在的位置。因此,每个位置都有自己的角色,玩家可以随机接收这些角色。
目前,大约有27个地点,如赌场。赌场有调酒师,赌徒,经销商等角色。
当我创建要在游戏中使用的位置列表时,我应该创建一个通用的位置类:
class Location:
def __init__(self, name, *roles):
self.name = name
self.roles = roles
并使用具有不同参数的构造函数,如
Location(name="Passenger Airplane", "Economy Class Passenger"...so on
Location(name="Bank Robbery", "Customer", ...so on
或者我应该创建从Location继承的类并对值进行硬编码:
class Airplane(Location):
def __init__(self):
self.name = "Airplane", etc
此外,我想在每个位置添加一个事实列表(例如WWII是在20世纪40年代),而对我来说,将该列表放在构造函数中似乎有点多了。
假设我使用的是类而不是使用构造函数,我应该使用工厂设计模式吗?
答案 0 :(得分:2)
类应代表程序中的不同对象或功能。如果一个类只与它所包含的数据不同,那么它应该是一个对象。
在您的示例中,如果您的Airplane
需要能够飞行,那么功能上与其他Locations
不同,并且可以证明使用fly
方法创建单独的类。< / p>
答案 1 :(得分:0)
关于继承问题。建议使用组合而不是继承。