为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米脂 2023-04-18 11:05:28
我是 Python 编码的新手,我正在尝试使用对象创建游戏。在main.py中,我使用名为Room的类创建了代表特定房间的对象。我可以在单独的文件中实例化这些对象,然后在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")这是房间类的构造函数:def __init__(self, room_name):     self.name = room_name     self.description = None
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

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


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


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")



查看完整回答
反对 回复 2023-04-18
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

一般来说,您会希望在“单独的”文件中定义/实现您的类,然后在主脚本中初始化对象实例,该脚本可能称为也可能不称为 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”是唯一的?有针对此类问题的设计模式,但我需要更多地了解您要实现的目标。


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信