如何从我的模块导入和创建我的课程?
我正在创建一个模块,它有类:
class LogLevel():
Info = 1
Warn = 2
Error = 3
class FalconPeer():
def __init__(self, port=37896, log_level=LogLevel.Info):
self._port = port
self._log_level = log_level
在文件夹结构中:
+---PyFalconUDP
| CHANGES.txt
| LICENSE.txt
| MANIFEST.in
| README.txt
| setup.py
|
+---falconudp
| enums.py
| falconpeer.py
| tree.txt
| __init__.py
|
+---test
| test_location.py
| test_utils.py
| __init__.py
但在PyFalconUDP文件夹中运行Python我无法导入和使用我的类 - 如何创建FalconPeer ?
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import falcondup.FalconPeer
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named 'falcondup'
>>> import falconudp.FalconPeer
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named 'falconudp.FalconPeer'
>>> import falconudp
>>> a = FalconUDP()
Traceback (most recent call last):
File "", line 1, in
NameError: name 'FalconUDP' is not defined
>>> a = falconudp.FalconPeer()
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'module' object has no attribute 'FalconPeer'
>>> from falconudp import FalconPeer
Traceback (most recent call last):
File "", line 1, in
ImportError: cannot import name FalconPeer
>>>
细分你的细节:
Pkg : falcondup
Module: falconpeer
Class : FalconPeer
使用模块名称导入:
import falcondup.falconpeer
使用完整路径创建一个对象直到类名:
obj = falcondup.falconpeer.FalconPeer()
一旦你创建了obj,你可以调用该类中的所有方法。
课堂内调用方法:
obj.method_name()
如果你想通过使用类名访问类属性。
falcondup.falconpeer.LogLevel.Info
falcondup.falconpeer.LogLevel.Warn
falcondup.falconpeer.LogLevel.Error
如果你想在里面使用: class_name.class_var_name
另一个场景:
如果LogLevel类在不同的文件中表示不同的模块,那么您需要导入该模块,而不是您可以访问该模块。
要从你的falconudp模块中导入一些东西,它应该放在__init__.py的全局命名空间中。
所以类的声明应该是:
__init__.py ,或者 __init__.py里面加入import falconpeer 