2014-02-07 40 views
1

我創建一個模塊,它具有類:如何從我的模塊導入和創建我的課程?

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

,可以你這樣做對我來說,導入操作系統和os.getcwd() –

+0

後導入操作系統輸出:'C:\\ Dev \ PyFalconUDP',即我開始解釋器的目錄。 – markmnl

回答

2

打破您的詳細信息:

使用模塊名
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類是在不同的文件,這意味着不同的模塊,那麼你需要導入該模塊比您可以訪問它。

+0

aha!進一步,現在我沒有定義LogLevel(LogLevel類在enums.py中),你知道我如何從FalconPeer訪問類屬性嗎? – markmnl

+0

請檢查更新 –

+0

這有幫助嗎? –

0

要從falconudp模塊導入某些東西,它應該位於__init__.py的全局命名空間中。

因此類聲明應該:

  1. 在裏面__init__.py,或
  2. 在裏面falconpeer.py,你也應該有import falconpeer__init__.py
從您的命令解釋器
相關問題