Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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_Python 3.x - Fatal编程技术网

Python 在创建类的实例时,能否调用类的实例?

Python 在创建类的实例时,能否调用类的实例?,python,python-3.x,Python,Python 3.x,我正在尝试编写一个文本冒险。我为房间内的对象创建了一个类。在下面的代码中 self.door = Object("Door", "There is an {} door in the north.".format("closed" if self.door.openstate == False else "open"), True, False, door_text, True, False) 我希望立即检测门是否打开或关闭,并相应更改描述。我知道上面的代码肯定是错误的,但有没有办法做到这一点

我正在尝试编写一个文本冒险。我为房间内的对象创建了一个类。在下面的代码中

self.door = Object("Door", "There is an {} door in the north.".format("closed" if self.door.openstate == False else "open"), True, False, door_text, True, False)

我希望立即检测门是否打开或关闭,并相应更改描述。我知道上面的代码肯定是错误的,但有没有办法做到这一点?

我不能100%肯定这是否能回答您的问题,但我认为您需要为您的门创建一个单独的类。我假设你有这样的房间:

class Room:

    def __init__(self):
        self.door = your_code_here
您可能需要创建一个门类,如:

class Door:

     def __init__(self, door_state):
         self.door_state = door_state

     @property
     def door_text(self):
         door_state = 'open' if not self.door_state else 'closed'
         return f"There is an {door_state} in the north"
然后你的房间课程将如下所示

class Room:

    def __init__(self):
        self.door = Door(False)
最后,如果你运行类似

r = Room()
print(r.door.door_text)

您应该看到正确的输出值。

在门存在之前,您应该如何判断门是打开还是关闭?听起来您希望描述门是打开还是关闭的字符串根据门是否打开而神奇地更新自身。这不是您显示的代码所做的,它试图立即计算值(并且您显示的任何内容都不会在以后更新它)。是的,我完全理解@Blckknght的错误。我只是想知道是否有这样做的方法。这完全取决于
对象
类的实现。您可以向它传递两个描述性字符串,一个在打开时使用,一个在关闭时使用。或者向它传递一个函数(可能使用
lambda
表达式),该函数根据某些参数生成正确的字符串。但是在您所展示的代码中,格式化太快了,在任何类的上下文中都会设置
door
属性,而不是在
对象中。