簡體   English   中英

如何導入我的模塊?

[英]How do I import my module?

/projects/mymath$ ls
__init__.py  __init__.pyc  mymath.py  mymath.pyc  tests

在目錄tests

/projects/mymath/tests/features$ ls
steps.py  steps.pyc  zero.feature

我試圖導入我的階乘函數

sys.path.insert(0,"../../")
#import mymath
from mymath.MyMath import factorial

但是它說沒有名為MyMath的模塊。

這是我的虛擬MyMath課程。

class MyMath(object):

        def factorial(self, number):
                if n <= 1:
                        return 1
                else:
                        return n * factorial(n-1)

那怎么了 謝謝。 這甚至是一個好習慣嗎(編輯sys路徑?)

這將工作import mymath

您不能從類中導入函數。 您要導入類本身( import mymath.mymath.MyMath )或將函數置於模塊級別並import mymath.mymath.factorial

據我所知,這是正確的。 沒有名為mymath.MyMath模塊。 雖然有一個名為mymath.mymath的模塊...

明確地說,在創建文件夾並將__init__.py文件放入其中時,您已經創建了一個包。 如果__init__.py文件為空,則仍然必須顯式導入軟件包中的模塊。 因此,您必須執行import mymath.mymath才能將mymath模塊導入您的命名空間。 然后,您可以通過mymath.mymath.MyMath訪問所需的內容。 如果要直接導入該類,則必須執行以下操作:

from mymath.mymath import MyMath

正如其他人已經解釋的那樣,您不能從類中導入方法。 您必須導入整個類。

一個問題是您的導入錯誤。 您有一個名為mymath的程序包,其中有一個名為mymath的模塊。 該模塊中有一個類。 這是您最多可以導入的內容:

>>> from mymath.mymath import MyMath
>>> myMathObject = MyMath()
>>> myMathObject.factorial(5)
120

另一個問題是您對階乘的第二次調用應在self上調用階乘,否則它將嘗試在模塊中將其查找為自由函數,這將無法正常工作。 試試吧!

這是我的虛擬MyMath課程。

Python不是Java;它不是Java。 在這里,該類不是任何類型的組織單位,而僅僅是數據類型的藍圖。 這里沒有理由定義一個類(無論如何都必須實例化它)。 只需將factorial函數定義為函數即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM