我正在创建一个模块,它有类:
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 >>>
答案 0 :(得分:2)
细分您的详细信息:
Pkg : falcondup
Module: falconpeer
Class : FalconPeer
使用模块名称导入:
import falcondup.falconpeer
使用完整路径创建对象,直至类名:
obj = falcondup.falconpeer.FalconPeer()
创建obj后,可以调用类中的所有方法。
在课堂内调用方法:
obj.method_name()
如果您想通过使用类名来访问class属性。
falcondup.falconpeer.LogLevel.Info
falcondup.falconpeer.LogLevel.Warn
falcondup.falconpeer.LogLevel.Error
如果您想在里面使用: class_name.class_var_name
另一个场景:
如果你的LogLevel类在不同的文件中,这意味着不同的模块,那么你需要导入该模块,而不是你可以访问它。
答案 1 :(得分:1)
要从falconudp模块导入内容,它应位于__init__.py
的全局命名空间中。
所以类声明应该是:
__init__.py
或import falconpeer
里面有__init__.py