父母子类动物动物园

时间:2013-04-11 23:53:20

标签: python oop class inheritance

这是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)

1 个答案:

答案 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)