Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python课我犯了错误还是我的老师[简单]_Python_Class_Structure - Fatal编程技术网

Python课我犯了错误还是我的老师[简单]

Python课我犯了错误还是我的老师[简单],python,class,structure,Python,Class,Structure,我的老师告诉我们制作一个时钟类,以小时、分钟和秒作为实例变量。然后他给了我们一系列不同的方法,我们必须完成他给我们的关于时钟类的目标 我们的任务之一是实现一个名为print12的方法,该方法使用冒号打印时间,并在末尾附加AM或PM。他让我们通过输入print12myclock来测试它。只有当我输入myclock.print12时,我的才能工作。我不确定他是犯了错误还是我的代码实现错了 这是我的密码: class Clock: def __init__(self, hour, minute

我的老师告诉我们制作一个时钟类,以小时、分钟和秒作为实例变量。然后他给了我们一系列不同的方法,我们必须完成他给我们的关于时钟类的目标

我们的任务之一是实现一个名为print12的方法,该方法使用冒号打印时间,并在末尾附加AM或PM。他让我们通过输入print12myclock来测试它。只有当我输入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替换Print12Cyclock,它就会起作用。

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

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

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

1创建一种按指示打印的时钟方法:

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

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

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

# Usage:
myclock = Clock(...)
print12(myclock)
2在时钟之外创建一个函数,该函数将时钟作为参数,并按指示打印:

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

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

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

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

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

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

1创建一种按指示打印的时钟方法:

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

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

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

# Usage:
myclock = Clock(...)
print12(myclock)
2在时钟之外创建一个函数,该函数将时钟作为参数,并按指示打印:

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

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

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

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

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

我们猜不出你老师的意图。你应该请他澄清一下。我想老师是在介绍课堂教学法。我们猜不出你老师的意图。你应该请他澄清一下。我认为讲师正在尝试介绍classmethods。谢谢你,我确信这是第二个,因为这是他要求我们使用的。第三种可能是,讲师希望你像第一个示例中那样编写实例方法,但希望你手动传递实例。如果直接从类Clock.print12myclock中获取未绑定的方法,则此方法有效。这不像使用绑定方法那么自然,但有时是必要的,当然值得学习。谢谢你,我相信这是第二种方法,因为这是他要求我们使用的方法。第三种可能是,讲师希望你像第一个示例那样编写实例方法,但希望你手动传递实例。如果直接从类Clock.print12myclock中获取未绑定的方法,则此方法有效。这不像使用绑定方法那样自然,但有时是必要的,当然值得学习。