这是python中的类设计问题。
我正在尝试设计三个类,一个用于动物,一个用于动物园,一个用于养鸡场。
class Animal:
pass
class Zoo:
def __init__(self, listOfAnimals)
.....
class chickenFarm(Zoo):
....
注意ChickenFarm是Zoo的子项,使用了许多zoo方法。此外,养鸡场还有其独特的方法,只与鸡肉有关。
我的问题是,一旦发现动物园里的所有动物都是鸡,动物园类(或物体)如何变成一个鸡农场对象? (显然动物园类有可以添加或移除动物的方法)
换句话说,:
z=Zoo()
z.addAnimals()
z.removeanimals()
if z.testAllCkichen():
z现在变异为一个chickenFarm对象
z.layEggs()
或者也许:
c=checkenFarm(z) # (when z now contains all chicken)
c.layEggs(0)
答案 0 :(得分:0)
以下是如何实现chickenFarm.__init__
的开始,以便当它获得Zoo
实例作为其第一个参数时,它将创建一个chickenFarm
,其属性从{复制{ {1}}实例:
Zoo
然后你可以像这样使用它:
class chickenFarm(Zoo):
def __init__(self, *args, **kwargs):
if args and isinstance(args[0], Zoo):
zoo = args[0]
# copy all Zoo data from zoo to self
# for example self.animals = zoo.animals.copy()
else:
Zoo.__init__(self, *args, **kwargs)