我不确定如何完成一些应该直截了当的事情。
我想定义一个类。在那个类中将是子类。在那些子类中将是属性。
好的,这很容易。但我希望根据另一个子类的属性生成一个子类的属性。这是我的(错误)代码尝试这样做:
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']
哪个更接近,但我真的想失去“水果”。结构
答案 0 :(得分:2)
或许对subclasses与encapsulation存在一些混淆。如果您正在寻找继承,这是一个示例层次结构。请注意,这个特定的代码没有充分利用层次结构,只是一些裸列表会更容易,变量都是类变量,而不是每个实例。
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)
答案 1 :(得分:1)
因为你将它定义为一组嵌套的类,所以你不必要地使事情复杂化。现在的解释涉及“类套件”之类的单词,以及为什么你需要在一个地方Fruits.crunchy
而在另一个地方需要Food.Fruits.crunchy
。您还尝试连接列表和字符串,这将无法正常工作。
简单地说,创建一个名为food
的模块,然后您可以import food
创建一个food.Salads()
的实例。