如何从静态外部类中构造内部类

时间:2018-07-27 12:36:35

标签: python

我有一个静态基类,我想封装子类。我找不到从静态外部类内部创建内部类的语法。

这是我想要的例子:

class Farm:
    my_pet_cat = Animal("Meeeeooowww", "Fluffy")

    class Animal:            
        def __init__(self, sound, fur):
            self.sound = sound
            self.fur = fur

        def speak(self):
            print(self.sound)

        def pet(self):
            return self.fur
  

NameError:未定义名称“动物”

我尝试使用Animal访问self.Animal(...),但这没有用,因为显然Farm没有自我,是一个静态类,并且是全部。如果将Animal放在Farm之外,我也可以成功访问它,但是我想将Animal类封装在Farm类中。

可以做到吗?

2 个答案:

答案 0 :(得分:3)

在引用动物类以创建实例之前定义动物类。

class Farm:
    class Animal:            
        def __init__(self, sound, fur):
            self.sound = sound
            self.fur = fur

        def speak(self):
            print(self.sound)

        def pet(self):
            return self.fur

    my_pet_cat = Animal("Meeeeooowww", "Fluffy")

答案 1 :(得分:0)

为什么不使用名为Farm的模块,并在Farm模块中定义类名Animal