0

簡単なことを成し遂げる方法がわかりません。

クラスを定義したい。そのクラスにはサブクラスがあります。それらのサブクラスには属性があります。

わかりました、それは簡単です。ただし、あるサブクラスの属性を別のサブクラスの属性に基づいて生成する必要があります。これを試みるための私の(間違った)コードは次のとおりです。

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

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

明らかに、ここでは「果物の輸入」は間違っています。しかし、どうすれば必要なことを達成できますか?

-------------編集/補遺---------------------------------- --------

さて、私は外側のクラス「Food」を失いました、それは大丈夫です、とにかくそれが好きではありませんでした。

これで、次のように最初のクラスを2番目のクラスにインスタンス化できます。

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

おそらく、サブクラスカプセル化についていくつかの混乱があります。継承を探している場合の階層の例を次に示します。この特定のコードは階層をあまり利用しておらず、一部のベアリストの方が簡単であり、変数はすべてクラス変数であり、インスタンスごとではないことに注意してください。

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 foodfood.Salads()

于 2013-02-12T16:28:44.977 に答える