Python类组合混乱

2024-06-12 21:58:30 发布

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

我有http://blog.thedigitalcatonline.com/blog/2014/08/21/python-3-oop-part-4-polymorphism/#.VvwAbjG1XGB的以下内容

class Room:
    def __init__(self, door):
        self.door = door

    def open(self):
        self.door.open()

    def close(self):
        self.door.close()

    def is_open(self):
        return self.door.is_open()

class Door:
    def __init__(self):
        self.status = "closed"

    def open(self):
        self.status = "open"

    def close(self):
        self.status = "closed"

    def is_open(self):
        return self.status == "open"

当我这样做的时候:

^{pr2}$

我想它应该返回“closed”而不是False,为什么这个不起作用?在


Tags: selfcomhttpclosereturninitisdef
3条回答

它不起作用是因为它完全按照你说的去做。你的代码是:

return self.status == "open" # returns True or False

而不是

^{pr2}$

这就是你要找的行为。在

一切正常。此方法返回self.status == "open"的结果。默认情况下,此门是"closed",因此返回值是False。在

代码中有两个问题:

  1. 这不是关于继承,而是关于组成:房间有门,但房间不是门。您没有创建继承。请修改你的标题。在
  2. 代码返回一个布尔值,这与它的方法名相匹配。如果复制浪费了代码,则应为此类方法和此类比较使用True或False布尔值,而不是字符串。否则,重命名该方法(因为它有另一个意图)并只返回plain self.status。在

相关问题 更多 >