2012-01-05 45 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