2012-01-05 44 views
3

我需要编写一个“存储”。我有class ClothingItem - ShoePantShirt全部从ClothingItem继承。现在我正在研究class Inventory(list)。我可以添加鞋子和裤子和衬衫,并获得总数(inventory.len())。现在爸爸要我告诉他有多少鞋在库存,多少裤子,不管。他说,如果我的商店开始销售Short s或Legging s,我不允许触碰我的Inventory课程。他谈到了将TYPE传递给长度函数的问题,但我无法弄清楚如何向Google询问。他在C#中工作,所以他只知道如何做到这一点,而不是Python。Python中的列表和类型

所以...可以有人请告诉我在哪里可以找出这个问题?他说如果你发布代码,他会知道,只是让我做更难的事情,所以请不要给我发送代码!告诉我,我应该看看,我会超级棒的感激。

+1

欢迎来到Stack Overflow;祝你好运。如果您在此处发布代码,其他人可以更轻松地向您提供反馈。由于我们普遍不喜欢刚发布代码时,你可能不会有太多麻烦,只是发布固定代码的人。 :) – sarnold 2012-01-05 23:20:23

+0

这*可能更适合程序员。(如果它适合某处)。 – bitmask 2012-01-05 23:23:05

+6

这不是一个很好的问题,但它不配合-3。杰奎琳,如果你不喜欢编程,请停止学习它。如果是为了好玩,那显然不是成功的。如果是为了工作,编程就是其中的一个工作,享受解决问题的过程会对你的职业生活质量产生巨大影响,包括快乐,金钱,能力等等。你会对一个没有“杀死你”的主题感到高兴,并且没有任何问题。 – 2012-01-05 23:27:32

回答

3

如果您class ClothingItem包括像一种方法:in_stock()返回从self.nameself.quantity建一个字符串,每个子类(ShoePantShirtLegging等),只需要正确地分配self.name当被实例化。

这样做是提供一种叫做polymorphism(虽然也许Duck Typing wikipedia article是一个更好的介绍跳过你不明白位。),这样子类都表现不同 - 不过的方式,“配合”与名你给他们。这意味着你需要为了进行新产品编辑代码 -

顺便说一句,如果这是我的问题要解决,我可能不会在存储中的每个类型的服装子类ClothingItem。这个设计足以学习如何使用子类化,但这不是一个理想的用法。 (相反,我只是把服装类型存储为Clothing类的成员。裤子,衬衫,鞋子,大猩猩,你对待它们都是一样的 - 一个名字,你有多少,你卖给他们多少钱,您从供应商处为他们付多少钱等)

+1

谢谢你我会阅读文章。然而,我父亲可能会说,这使得ClothingItem类变得聪明,因为它必须知道库存 – Jacqueline 2012-01-05 23:31:39

+1

每次添加一件新衣服时,您都不需要修改'ClothingItem',但是您需要写一个新的'Legging'或'Short'类,或者每次添加新产品时。 – sarnold 2012-01-05 23:42:39

+3

男人,我喜欢教初学者如何编程,但这真的很伤心。 :(对不起,Jacqueline,编程应该很有趣 – sarnold 2012-01-05 23:44:33

3

有几种方法可以解决此问题。第一个想到的是使用isinstancefilter函数(或者list comprehension代替filter,但是如果你只是在学习,理解可能太快太早了),以便将你的列表精简成只是项目属于一个特定的类。

另外,提醒你的爸爸,如果学习编程是“杀了你”,他创造了一个错误的环境供你学习。当他们有这种感觉时,没有人会在一个话题中兴旺起来。作为喜欢编程的人,看到这件事发生在人们身上真的让我难过。

+0

谢谢你在过去几年中同意我的观点。没有任何社交生活,因为他说“你必须在你出门之前完成你的编程”,因为我再也不会和朋友出去玩,而且我总是错过了有趣的活动。朋友们已经停止邀请我参加我曾经被邀请过的许多事情,这让我非常伤心:( – Jacqueline 2012-01-05 23:36:51