是否可以在多个文件中使用同一个对象?

Is it possible to use the same object in multiple files?

我是 Python 编码的新手,我正在尝试使用对象创建游戏。在 main.py 中,我使用名为 Room 的 class 创建了代表特定房间的对象。我可以在单独的文件中实例化这些对象,然后在 main.py 中使用它们吗?如果可以,我该怎么做?

我尝试简单地在文件中创建一个对象并在 main.py 中使用它,但它不起作用。我还尝试在第二个文件中创建一个创建房间对象的方法,然后在 main.py 中调用它,但这也没有用。我也找不到任何关于在多个文件中使用一个对象的文档。

这是房间对象的示例:

dining_hall = Room("Dining Hall")
dining_hall.set_description("A large room with ornate golden decorations on each wall")

这是房间的构造函数class:

def __init__(self, room_name):
    self.name = room_name
    self.description = None

一般来说,您会希望 define/implement 您的 类 在“单独的”文件中,然后在主脚本中初始化对象实例,该脚本可能称为也可能不称为 main。

room.py

class Room:

  def __init__(self, room_name):
    ...

main.py (确保包含 room.py 的文件夹在您的路径中)

from room import Room

dining_hall = Room("Dining Hall")
...

也许您可以解释为什么要在另一个脚本中进行初始化 - 例如,您可能希望“Dining Hall”已经知道其描述,或者您可能希望强制“Dining Hall”是唯一的?有针对这类问题的设计模式,但我需要更多地了解您要实现的目标。

是的,您可以在单独的文件中实例化对象。根据描述,您使用的两种方式也是正确的。不幸的是,我没有看到你写的完整代码,所以不能确切地说出哪里出了问题。以下是实现目标的两个示例:

正在使用另一个文件中的对象:

dining_hall.py

dining_hall = Room("Dining Hall")

main.py

from dining_hall import dining_hall

dining_hall.set_description("A large room with ornate golden decorations on each wall")

或者你可以使用特殊的实例化函数(最好实现类似单例的东西):

dining_hall.py

dining_hall_object = None

def get_dining_hall():
    global dining_hall_object

    if dining_hall_object is None:
        dining_hall_object = Room("Dining Hall")

    return dining_hall_object

main.py

from dining_hall import get_dining_hall

dining_hall = get_dining_hall()
dining_hall.set_description("A large room with ornate golden decorations on each wall")