2017-09-14 2 views
0

L'instruction qui renvoie self.seconds.splitSeconds() ne fonctionne pas correctement, me guider avec la syntaxecorrectement appeler une méthode d'instance dans une classe

class Time: 
    def convertToSeconds(self): 
     self.minutes = self.hours * 60 + self.minutes 
     self.seconds = self.minutes * 60 + self.seconds 
     return self.seconds 

    def splitSeconds(seconds): 
     self.hours = seconds // 3600 
     self.minutes = (seconds % 3600) // 60 
     self.seconds = seconds % 60 
     return self 

    def increment(self, seconds): 
     self.seconds = self.convertToSeconds() + seconds 
     return self.seconds.splitSeconds() 

    def printTime(time): 
     print(str(time.hours)+":"+str(time.minutes)+":"+str(time.seconds)) 

time = Time() 
time.hours = 11 
time.minutes = 30 
time.seconds = 45 

seconds = 40 

time.increment(seconds) 
time.printTime() 

Répondre

0

Je crois que vous devez ajouter self comme attribue à splitSeconds.

def splitSeconds(self, seconds) 

En outre, votre déclaration de retour devrait être

return self.splitSeconds(self.seconds) # edited based on comments 

Vous devriez appeler la méthode d'instance sur l'exemple, rien d'autre.

+0

Je suis la solution la déclaration devrait être, revenir self.splitSeconds (self.seconds) et que vous avez dit rattrapante def (auto, secondes) – Sakshi

0

Vous devez __init__ initialiser votre Time classe, comme:

class Time: 
    def __init__(self, hours, minutes, seconds): 
     self.hours = hours 
     self.minutes = minutes 
     self.seconds = seconds 

    def convertToSeconds(self): 
     self.minutes = self.hours * 60 + self.minutes 
     self.seconds = self.minutes * 60 + self.seconds 
     return self.seconds 

    def splitSeconds(self, seconds): 
     self.hours = seconds // 3600 
     self.minutes = (seconds % 3600) // 60 
     self.seconds = seconds % 60 


    def increment(self, seconds): 
     self.seconds = self.convertToSeconds() + seconds 
     return self.seconds 

    def printTime(self): 
     print(str(self.hours)+":"+str(self.minutes)+":"+str(self.seconds)) 

time = Time(11,30,45) 

seconds = 40 
time.increment(seconds) 
time.printTime() 
+0

pourtant, je ne comprends pas vraiment votre fonction 'splitSeconds'. Copiez simplement vos extraits. Mais, vous pouvez vous y référer. – Will

+0

La méthode splitSeconds sépare les secondes et génère une heure (heures: minutes: secondes) – Sakshi