[英]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.