Class属性可以为数组吗?

时间:2019-01-11 04:27:41

标签: python

我是OOP和python的新手,所以如果这是一个简单的问题,请多多包涵。如果我创建一个具有属性“ a”,“ b”和“ c”的类,这些属性是否可能是数组,使得属性a [2]具有含义?

我搜索并发现的所有答案似乎都在错误的方向上回答!因此,我通过以下几行使其更加明确,希望它有助于澄清我的问题:

例如,我的意思是以下几行中的部分:breakfast=['menuitem2','menuitem3']

def main():
    menuitem1 = MenuItem()
    menuitem2 = MenuItem(title="Cocktail Bun", cost="8.0",long_desc="Cocktail Sweat Bun", short_desc="CB",item_type="bread")
    menuitem3 = MenuItem(title="Mexican Bun", cost="7.0",long_desc="Maxican Sweat Bun", short_desc="MB",item_type="dessert")
    menu1 = Menu()
    menu2 = Menu(breakfast=['menuitem2','menuitem3'],lunch=menuitem3,dinner=menuitem2)
    menu3 = Menu(breakfast=menuitem3,lunch=menuitem2,dinner=menuitem3)
    menus = [menu2, menu3]

我如何使其起作用?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

根据我的理解,我认为这将实现您的追求。

我对您的定义所做的2项更改是

  • 我删除了早餐单周围的引号,以使用已定义的对象
  • 我使用所有菜单属性的列表,因为我假设所有菜单属性都有多个值。

要注意的一件事是,从不使用menu1和menuitem1。我不确定这是否有意。

代码:

class MenuItem:
    def __init__(self, title=None, cost=None, long_desc=None, short_desc=None, item_type=None):
        self.title = title
        self.cost = cost
        self.long_desc = long_desc
        self.short_desc = short_desc
        self.item_type = item_type


class Menu:
    def __init__(self, breakfast=None, lunch=None, dinner=None):
        self.breakfast = breakfast
        self.lunch = lunch
        self.dinner = dinner


def main():
    menuitem1 = MenuItem()
    menuitem2 = MenuItem(title="Cocktail Bun", cost="8.0",long_desc="Cocktail Sweat Bun", short_desc="CB",item_type="bread")
    menuitem3 = MenuItem(title="Mexican Bun", cost="7.0",long_desc="Maxican Sweat Bun", short_desc="MB",item_type="dessert")
    menu1 = Menu()
    menu2 = Menu(breakfast=[menuitem2,menuitem3],lunch=[menuitem3],dinner=[menuitem2])
    menu3 = Menu(breakfast=[menuitem3],lunch=[menuitem2],dinner=[menuitem3])
    menus = [menu2, menu3]

    print(menus[0].breakfast[0].title)
    print(menus[1].breakfast[0].title)

    print(menus[1].lunch[0].short_desc)

main()