我的老师告诉我们制作一个Clock类,该类将以hoursminutesseconds作为实例变量。然后,他为我们提供了许多我们必须完成的方法,以完成他给我们有关Clock类的目标。

我们的任务之一是实现一个名为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)


这对我不起作用,但是如果我将print12(myclock)替换为myclock.print12(),它将起作用。

最佳答案

仅根据您的报告,老师可能意味着两件事之一:

1)创建Clock的方法,如下所示进行打印:

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)


您需要问您的老师他的意思。

关于python - Python类是我犯了错还是我的老师[简单],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25982482/

10-12 20:48