Python中的列表和类型

时间:2012-01-05 23:15:48

标签: python list

我需要写一个“商店”。我class ClothingItem - ShoePantShirt都来自ClothingItem。现在我正在研究class Inventory(list)。我可以添加鞋子,裤子和衬衫,并获得总数(inventory.len())。现在爸爸要我告诉他有多少鞋子在库存,有多少裤子,等等。他说,如果我的商店开始销售ShortLegging,我就不能接触我的Inventory课程。他说过将TYPE传递给长度函数,但我无法弄清楚如何向Google询问。他在C#工作,所以他只知道如何用它来做,而不是用Python。

所以...有人可以告诉我在哪里想出这个吗?他说,如果你发布他会知道的代码,只是让我更难做,所以请不要发给我代码!告诉我应该在哪里看,我会非常感激。

3 个答案:

答案 0 :(得分:3)

如果您的class ClothingItem包含以下方法:in_stock(),它会返回从self.nameself.quantity构建的字符串,每个子类(Shoe,{{1 }},PantShirt等)只需在实例化时正确分配Legging

这样做提供了一个名为polymorphism的东西(虽然Duck Typing wikipedia article可能是一个更好的介绍。跳过你不理解的位。)所以子类的行为都不同 - 但是以一种方式“适合”你给他们的名字。

顺便说一下,如果这是我要解决的问题,我可能不会为商店中的每种服装都设置self.name - 这意味着您需要编辑代码为了携带新产品。这种设计足以学习如何使用子类化,但这不是一个理想的用途。 (相反,我只是将服装类型存储为ClothingItem类的成员。裤子,衬衫,鞋子,大猩猩,你对它们都一视同仁 - 这个名字,你有多少,你有多少卖给他们,你从供应商那里支付多少钱。)

答案 1 :(得分:3)

有几种方法可以解决这个问题。首先想到的是使用isinstancefilter函数(或list comprehension代替filter ...但是如果你刚学习,理解可能太快了太多,无法将你的列表削减成属于特定类的项目。

另外,提醒你的父亲,如果学习编程“杀了你”,他就会为你学习创造错误的环境。当他们有这种感觉时,没有人能在这个话题中茁壮成长。正如有人谁爱编程,这真的让我伤心地看到,发生在人。

答案 2 :(得分:1)