2014-09-22 82 views
1

我的老師告訴我們做一個Clock班,將hoursminutesseconds作爲實例變量。然後,他給了我們一系列不同的方法來完成他給我們的有關Clock課程的目標。Python班是我犯了一個錯誤還是我的老師[簡單]

我們的一項任務是實施一種名爲print12()的方法,該方法用冒號打印時間並將AM或PM追加到最後。他要求我們輸入print12(myclock)進行測試。只有當我輸入myclock.print12()時,礦纔有效。我不確定他是否犯了錯誤,或者我錯誤地執行了我的代碼。

這裏是我的代碼:

class Clock: 
    def __init__(self, hour, minute, second): 
     self.hour = hour 
     self.minute = minute 
     self.second = second 
    def __str__(self): 
     return '%02d'%self.hour+':'+'%02d'%self.minute+':'+'%02d'%self.second 
    def print12(self): 
     if self.hour >= 13: 
      print(self,"P.M.") 
     else: 
      print(self,"A.M.") 
    def advance(self,s1): 
     if s1 == 'sec': 
      self.second += 1 
     elif s1 == 'min': 
      self.minute += 1 
     elif s1 == 'hour': 
      self.hour += 1 
     if self.second == 60: 
      self.second = 0 
      self.minute += 1 
     if self.minute == 60: 
      self.minute = 0 
      self.hour += 1 
     if self.hour == 24: 
      self.hour = 0 
      self.minute = 0 
      self.second = 0 

這裏是他的主要代碼來測試程序:

myclock = Clock(15,59,5) 
print(myclock) 
print12(myclock) 
myclock.advance('sec') 
print(myclock) 
myclock.advance('min') 
print(myclock) 

這並沒有爲我工作,但如果我myclock.print12()取代print12(myclock)會工作。

+0

我們不能猜出你老師的意圖。你應該問他澄清。 – Yoel 2014-09-22 20:24:48

+0

我認爲教官正在嘗試引入classmethods .. – Ram 2014-09-22 20:42:24

回答

2

僅僅根據你的報告,老師可能意味着兩件事情之一

class Clock: 
    ... 
    def print12(self): 
     if self.hour >= 13: 
      print(self,"P.M.") 
     else: 
      print(self,"A.M.") 

# Usage: 
myclock=Clock(...) 
myclock.print12() 

2)創建功能,外Clock,這需要一個Clock作爲參數,並打印指示:

class Clock: 
    ... 

def print12(clock): 
    if clock.hour >= 13: 
     print(clock,"P.M.") 
    else: 
     print(clock,"A.M.") 

# Usage: 
myclock = Clock(...) 
print12(myclock) 

你需要問你的老師他的意思。

+0

謝謝我確定這是第二個,因爲這就是他要求我們使用 – 2014-09-22 20:41:31

+0

第三種可能是教師希望你寫一個實例方法(如in第一個例子),但希望你手動傳遞實例。如果你直接抓取類未被綁定的方法:'Clock.print12(myclock)',這將起作用。這不像使用綁定方法那麼自然,但有時是必要的(當然也值得學習)。 – Blckknght 2014-09-22 20:58:23

2

print12函數僅在Clock類中定義,所以應該在該類的實例上調用該函數。因此,myclock.print12是正確的方法。指示

1)創建的Clock它打印方法:

相關問題