📜  门| GATE-CS-2015(套装1)|第 47 题(1)

📅  最后修改于: 2023-12-03 15:28:44.300000             🧑  作者: Mango

门 | GATE-CS-2015(套装1)|第 47 题

本题要求实现一个门类(Gate),支持打开(open)、关闭(close)和询问是否打开(is_open)等操作。

实现思路

我们可以使用一个布尔值 is_open 表示门是否打开。openclose 只需要分别将 is_open 设为 TrueFalse 即可。is_open 方法则直接返回 is_open 的值即可。

class Gate:
    def __init__(self):
        self.is_open = False
    
    def open(self):
        self.is_open = True

    def close(self):
        self.is_open = False
    
    def is_open(self):
        return self.is_open

然而,上述实现存在一个问题,即 is_open 方法和 is_open 属性重名了,会造成 AttributeError。为了解决这个问题,我们可以将 is_open 属性的名称改为 _is_open

修改后的代码如下:

class Gate:
    def __init__(self):
        self._is_open = False
    
    def open(self):
        self._is_open = True

    def close(self):
        self._is_open = False
    
    def is_open(self):
        return self._is_open
使用示例

创建一个新的门对象:

my_gate = Gate()

打开门:

my_gate.open()

关闭门:

my_gate.close()

查询门是否打开:

if my_gate.is_open():
    print("门已经打开了!")
else:
    print("门还没有打开。")
结语

实现一个门类虽然简单,但是涉及到了类的基本操作,是 Python 面向对象编程的基础。通过本题,我们可以掌握类的基本设计和使用方法,为以后的编程奠定更加牢固的基础。