是否可以在多个文件中使用同一个对象?
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")
我是 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")