0

我不确定如何完成应该简单的事情。

我想定义一个类。在那个类中将是子类。在这些子类中将是属性。

好的,这很容易。但我希望根据另一个子类的属性生成一个子类的属性。这是我尝试这样做的(错误)代码:

class Food(object):
    class Fruits(object):
        crunchy=['Apples', 'Pears']
        juicy=['Limes', 'Lemons']

    class Salads(object):
        import Fruits
        FruitSalad=crunchy+juicy+['Whipped Cream']

显然“进口水果”在这里是错误的。但是我怎样才能完成我所需要的呢?

-------------编辑/附录---------------------------------- ----

好的,所以我失去了外部类“食物”,没关系,反正我从来不喜欢它。

我现在可以像这样将第一个类实例化为第二个类:

class Fruits(object):
    crunchy=['Apples', 'Pears']
    juicy=['Limes', 'Lemons']

class Salads(object):
    fruit=Fruits
    FruitSalad=fruit.crunchy+fruit.juicy+['Whipped Cream']

哪个更近,但我真的很想失去“水果”。结构体。

4

2 回答 2

2

也许对subclassesencapsulation存在一些混淆。如果您正在寻找继承,这是一个示例层次结构。请注意,这个特定的代码并没有充分利用层次结构,只是一些裸列表会更容易,并且变量都是类变量,而不是每个实例。

class Food(object):
    pass

class Fruit(Food):
    pass

class Salad(Food):
    pass

class CrunchyFruit(Fruit):
    ingredients = ['apples','pears']

class JuicyFruit(Fruit):
    ingredients = ['limes','lemons']

class FruitSalad(Salad):
    ingredients = JuicyFruit.ingredients + CrunchyFruit.ingredients + ['whipped cream']

print(FruitSalad.ingredients)
于 2013-02-12T16:14:05.797 回答
1

因为您将其定义为一组嵌套的类,所以您不必要地使事情复杂化。解释现在将涉及诸如“班级套件”之类的词,以及为什么您需要Fruits.crunchy在一个地方和Food.Fruits.crunchy另一个地方。您还尝试连接列表和字符串,但这是行不通的。

只需保持简单,创​​建一个名为 的模块food,然后您就可以import food创建一个food.Salads().

于 2013-02-12T16:28:44.977 回答