Python类 我是犯了错还是我的老师 [容易]

2024-05-01 21:58:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的老师告诉我们做一个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)

这对我不起作用,但如果我用myclock.print12()替换print12(myclock),它就会起作用。你知道吗


Tags: 方法代码selfifdefsecprintsecond
2条回答

仅根据你的报告,老师的意思可能是两件事之一:

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)

你得问问你的老师他是什么意思。你知道吗

print12函数只在Clock类中定义,因此应该在该类的实例上调用它。因此,myclock.print12是正确的方法。你知道吗

相关问题 更多 >