📅  最后修改于: 2023-12-03 14:58:34.070000             🧑  作者: Mango
这是一道Sudo GATE 2020 Mock II的编程挑战,题号为问题6。本题目要求寻找一个名为“门”的类的实现,该类能够实现开门和关门的基本功能,并能够记录门上次被更新状态的时间。
本题要求实现一个名为“门”的类。该类应该有以下方法:
open()
: 用于将门打开。close()
: 用于关闭门。get_status()
: 用于查询门当前的状态,返回值类型为字符串("open"或"close")。set_status(status)
: 用于设置门的状态,输入参数为"open"或"close"。注意,此方法并不会直接将门打开或关闭,只会更新门的状态和时间戳。get_last_change_time()
: 用于查询门上次被更新状态的时间,返回值类型为时间戳。门的初始状态应该为关闭状态,初始时间戳应该为0。
请根据以上的挑战要求,实现名为“门”的类,具体实现请参考下方代码:
class Door:
def __init__(self):
self.status = "close"
self.last_change_time = 0
def open(self):
self.status = "open"
self.last_change_time = time.time()
def close(self):
self.status = "close"
self.last_change_time = time.time()
def set_status(self, status):
self.status = status
self.last_change_time = time.time()
def get_status(self):
return self.status
def get_last_change_time(self):
return self.last_change_time
可以使用以下代码在python中检验这个类的正确性:
door = Door()
# 初始状态应该是关闭状态
assert door.get_status() == "close"
# 开门并检查状态和时间更新
door.open()
assert door.get_status() == "open"
assert door.get_last_change_time() > 0
# 关门并检查状态和时间更新
door.close()
assert door.get_status() == "close"
assert door.get_last_change_time() > 0
# 设置状态为“开”,并检查状态和时间更新
door.set_status("open")
assert door.get_status() == "open"
assert door.get_last_change_time() > 0