-5

我正在尝试在新样式类中实现这一点并且失败了。在此示例中,我想创建具有不同植物和动物种群的森林。

class forest:
    def __init__(self,p,a):
        self.alive="alive" 
        self.pl = []
        self.ani = []
        for i in range(p):
            self.pl.append(self.Plant())
        for i in range(a):
            self.ani.append(self.Animal())
    class Plant:
        def __init__(self):
            self.synth = "co2"
            self.name = "coconut"
    class Animal:
        def __init__(self):
            self.carb="o2"
            self.name="orangutan"

编辑:按照 Lazlow 的要求。我的问题是我对嵌套和继承感到困惑。所以在我的方法中我试图做到这一点

class forest(object):
    ....
    ....

    class Plant(forest):

而不是使用类植物(对象)。我还试图在 Plant 类中定义应该在 Forest 类中的函数。我试图使用 /super/ 关键字来实现我不应该拥有的东西。然后我迷失在阅读有关创建描述符来做我想做的事情的过程中。我认为所有这些尝试都会分散我对问题的注意力。在我阅读第一个回复后,它们立即被清除。

我要感谢你们俩。问候,ABCD

4

1 回答 1

2

旧式类声明和新式类声明的区别在于新式类必须继承自object(或其他一些新式类)。因此,要使您的类具有新风格,只需放在(object)类名之后:

class forest(object):
    # ...

您还嵌套了类,这在新式或旧式类中都没有被禁止,但这通常是令人困惑和不必要的。只需取消缩进您的PlantAnimal类声明,就可以了。如果需要,您也可以通过继承来使它们成为新样式object

请注意,如果您使用的是 Python 3,则所有类都是新型类。您不需要显式继承 from object,因为如果您省略它,编译器会为您添加它。将其明确化通常是一个好主意,尤其是当您在不同时间同时使用 Python 2 和 Python 3 时。

于 2013-09-06T07:18:11.603 回答