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