如何调用在modu中创建的对象

2024-04-28 16:36:47 发布

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

我对Python中的类有问题。 我想知道如何调用在其他python程序的模块中创建的对象。在

让我举个例子。我在“课堂”里有这些东西_模块.py“文件

def objectCase():
    object1 = class_name("object1")
    object2 = class_name("object2")
    object3 = class_name("object3")

def other_objectCase():
    other_object1 = class_name("other_object1")
    other_object2 = class_name("other_object2")
    other_object3 = class_name("other_object3")

对于from class_module.py import *,我想如果我使用objectCase()函数,我的程序中就有这些对象(object1, object2, object3),如果我使用otherobjectCase()函数,我会调用所有otherobject。 但事实并非如此。 有什么问题吗?在


Tags: 模块对象函数namepy程序defclass
3条回答

您正在函数内部创建局部变量。一旦函数返回,它们就会丢失。如果以后需要这些对象,return将它们发送给调用者

return object1, object2, object3

并在调用代码中将名称绑定到它们

^{pr2}$

查看Scopes and Namespaces的文档,名称object1object2和{}是objectCase()函数的本地名称,因此在编写代码时,您将无法从主模块访问它们。在

最典型的实现方法是返回这些变量:

def objectCase():
    object1 = class_name("object1")
    object2 = class_name("object2")
    object3 = class_name("object3")
    return object1, object2, object3

然后当您调用它时,将返回的值赋回相同的名称:

^{pr2}$

自动保持与局部变量相同的名称并不是一个好方法,但是在这里返回一个字典可能是合适的。您可以返回object1, object2, object3,而不是返回{'object1': object1, 'object2': object2, 'object3': object3},然后调用函数可以执行如下操作:

result = objectCase()
# do something with result['object1'], result['object2'], or result['object3']

如果您想object1。。。要在模块的命名空间中,您有几个选项:

object1, object2, object3 = objectCase()

或者,如果不想在那里处理赋值,可以在函数中使用global关键字:

^{pr2}$

或者,您可以完全跳过该函数,将其作为顶层代码:

object1 = class_name("object1")
object2 = class_name("object2")
object3 = class_name("object3")

相关问题 更多 >