繁体   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