如何导入类名称python

如何导入类名称python,python,import,python-import,Python,Import,Python Import,这是我的python文件夹结构(它没有任何python包): script1有: class myclass(object): def __init__(): print("in init") def showReport(): print("in report only function") script2有: from . import myclass 当我运行python-m folder.script2时 我得到/usr/bin/py

这是我的python文件夹结构(它没有任何python包):

script1有:

class myclass(object):
    def __init__():
        print("in init")

    def showReport():
        print("in report only function")
script2有:

from . import myclass
当我运行python-m folder.script2时

我得到
/usr/bin/python:无法导入名称myclass


如何导入该类以便在script2上调用该类的函数?

您说您确实有一个包,但您仍然必须引用包含您的类的模块
script1
,因此:

from .script1 import myclass
另外,在Python中,类名通常使用驼峰大小写,因此
MyClass
不是
MyClass

例子 使用名为
package
的包和modules
module1
module2
的工作示例,然后从
package
外部调用
python-m package.module2

➜  ~  tree package

├── __init__.py
├── module1.py
└── module2.py

➜  ~  cat package/module1.py 

class MyClass(object):
    def work(self):
        print 'Working!'

➜  ~  cat package/module2.py 

from .module1 import MyClass

if __name__ == '__main__':
    worker = MyClass()
    worker.work()

➜  ~  python -m package.module2  

Working!

尝试使用脚本中的
导入myclass

您不能使用相对导入,如从中的
。导入blah
,除非您将文件夹放入一个包中。oh my folder的可能副本确实有一个
\uuuu init\uuuuuuuuuupy
,这使它成为一个包,我想您可以修复/再次检查
myclass
的拼写吗?这里拼写为
myClass
tooTry
from.script1导入myClass
谢谢。我得到了`/usr/bin/python:No module name script1`我正在从包python-m folder.script2外部运行这个脚本。仅供参考。这里我没有任何init.pyok有一个拼写错误导入工作!但是,当我尝试使用myClass.showReport()调用函数时,`I get
TypeError:必须使用myClass实例作为第一个参数调用未绑定的方法showReport()(取而代之的是nothing)
如果没有实例化该类,请在调用
x.showReport()
之前使用
x=myClass
,您还需要
defshowreport(self)
,您在问题中忘记了
self
。请复制粘贴我的工作示例,然后对其进行调整,因为您同时处理了许多问题,这会让人感到困惑。顺便说一句,我注意到,尽管我的脚本运行成功,但最后我得到了/usr/bin/python:没有名为folder.script2.py的模块。
➜  ~  tree package

├── __init__.py
├── module1.py
└── module2.py

➜  ~  cat package/module1.py 

class MyClass(object):
    def work(self):
        print 'Working!'

➜  ~  cat package/module2.py 

from .module1 import MyClass

if __name__ == '__main__':
    worker = MyClass()
    worker.work()

➜  ~  python -m package.module2  

Working!