0

我在模块练习中参加了如下课程。练习/example.py

class Example :

    #some code#

e1= Example();
e2= Example();

我有practice/__init__.py

from example import Example

我有 main.py

import sys , python_practice


e3 = python_practice.Example();


from python_practice import *

e1.sum(1,2);

但我收到错误

Traceback (most recent call last):
File "practice.py", line 11, in <module>
e1.sum(1,2);
NameError: name 'e1' is not defined

我哪里出错了......

是否可以将类的对象导入另一个模块?

4

2 回答 2

3

是的,你只需要导入它。

当你这样做时from python_practice import *,你得到所有定义在practice/__init__.py. 在那__init__.py,你不 import e1,所以你也不用 import 它from python_practice import *

如果您想e1在顶层可用,则python_practice需要将其导入__init__.py. 将您的代码更改为from example import Example, e1, e2.

于 2013-09-27T06:38:38.513 回答
1

__init__为你的包设置命名空间。由于__init__imports Example, thenExample在包命名空间中可用(例如python_practice.Example)。 e1在那里不可用,因为您在其中所做的任何事情都没有__init__使e1那里可用。

当然,你几乎总是可以到达那里......

from python_practice.example import e1

应该管用。

于 2013-09-27T06:38:34.900 回答