2013-12-08 73 views
0

我正在努力編寫我的第一個程序。基本上,會有兩個對象,其中包含5個屬性。然後每個屬性由兩個參數randint(1, 6)randint(1, 20)定義。然後該程序將評估Object1的每個屬性與Object2的每個屬性的關係。創建一個具有隨機,多值屬性的類

我試圖創建一個類,會產生這兩個對象,但我能想出是這樣的......

from random import randint 

    class Object: 
     def __init__(self): 
      self.Attribute1a = randint(1,6) 
      self.Attribute1b = randint(1,20) 
      self.Attribute2a = randint(1,6) 

等等...

而且,是有一種方法可以爲每個屬性分配兩個或多個參數,這樣我就可以擁有AttributeX,而不是AttributeXa,然後是AttributeXb?

+4

不要過分想這個,這對於這樣一個小任務是浪費時間。去嘗試一下。這是一個簡單的程序,因此只需嘗試不同的想法並不會花費太多。 – BartoszKP

+0

如果你的屬性是隨機的,不要傳遞它們;相反,在* __init()中隨機分配它們*,並且只有自我參數 – jonrsharpe

+0

@BartoszKP,當您有實際的想法時很容易不會過度考慮它。 – sivanes

回答

1

你在找什麼是一個元組:self.Attribute1 = (randint(w,x), randint(y,z)) 其中w,x,y和z是任何你想要的常數。然後,您可以通過單獨訪問每個列進行比較:Attribute1[0]Attribute1[1]

這裏有一個想法:讓我們嘗試把你的第一個程序概念,並使其更加面向對象。雖然你描述的課程有效,但我認爲你對練習課堂關係更感興趣 - 如果我在這裏錯了,請糾正我。如何創建兩個類:RandomObjectARandomObjectB。在這兩個類中,定義一組變量,然後在主要方法中比較它們。這將真正幫助您理解編程如何在對象級別上工作,這是比特定數據構造更重要的一課。

一旦你成功完成了,我會添加一些方法到你的每個類;你怎樣才能讓類不直接與其他類的屬性進行交互?

之後,我會研究繼承。如果我們想創建100個稱作RandomObjectX的類,該怎麼辦?對每一個最後一個手寫代碼顯然是不合理的,所以讓我們思考一下如何從一個更高級的類(稱爲超類)中派生功能。

最後,雖然我很欣賞你跳進去嘗試,但我強烈建議你閱讀Python教程和文檔。說實話,這不是一篇難讀的文章,你會學到很多東西,並且當你編寫代碼的時候,你會有更好的範圍。如果您將動手實踐和個人項目與閱讀文檔相結合,編碼變得更容易。祝你好運!

+0

謝謝!不過,我想澄清一些事情。如何創建兩個完全相同化妝的獨立班級在這裏是有益的?或者將RandomObjectB從RandomObjectA繼承?哪些類型的方法可以添加到這些單獨的類中? – sivanes

+0

@sivanes:啊哈,很好。你絕對正確,做兩個完全一樣的課程沒有任何好處。我是在假設你對OOP更新一點的情況下運營的,我發現通常教導繼承的一個好方法是通過展示「這裏有兩個類似的類,現在有什麼問題?我們如何才能讓它變得更好? 」。如果你已經有了很好的處理方法,我建議你跳過一個'RandomObject'類,讓它們相互交互!練習你的面向對象,直到你真的很好,這很重要;) – AaronB

+0

明白了,謝謝!我犯了一個非常被動地學習Python The Hard Way的錯誤,所以有些東西一直伴隨着我,而另一些(有時甚至更基本的東西)根本沒有。 – sivanes

相關問題