Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入具有不同类的模块_Python_Python 3.x - Fatal编程技术网

Python 导入具有不同类的模块

Python 导入具有不同类的模块,python,python-3.x,Python,Python 3.x,我有一个名为jaguar的模块,该模块下有不同的类。每个类中都有许多函数。当我通过导入整个模块时 import jaguar as jg 然后尝试调用名为read_excel的函数,它将错误显示为 AttributeError: module 'jaguar' has no attribute named 'read_excel' 相反,如果我一类一类地调用每个类并使用它,它就会工作 有人能帮我解决这个问题吗?没有看到您的代码,很难100%确定发生了什么。在未来,如果你加入一个新的答案,你可

我有一个名为jaguar的模块,该模块下有不同的类。每个类中都有许多函数。当我通过导入整个模块时

import jaguar as jg
然后尝试调用名为read_excel的函数,它将错误显示为

AttributeError: module 'jaguar' has no attribute named 'read_excel'
相反,如果我一类一类地调用每个类并使用它,它就会工作


有人能帮我解决这个问题吗?

没有看到您的代码,很难100%确定发生了什么。在未来,如果你加入一个新的答案,你可能会得到更多更好的答案

似乎最好避免Python在调用函数和方法时如何查找函数和方法的细节(这是双重的,因为我不是这方面的专家)。也就是说,问题在于您试图调用函数,就好像它是在模块级别定义的一样。但是,所讨论的函数实际上是在类(在该模块内)中定义的方法。您的jaguar.py文件结构如下:

""" jaguar module does jaguar-y stuff """
class TheClass:
    def __init__(self):
        # Do object initialization stuff
    def read_excel(self):
        print('In read_excel()')
""" jaguar module does jaguar-y stuff """
def read_excel():
    print('In read_excel()')

class TheClass:
    def __init__(self):
        # Do object initialization stuff
在您的程序文件中,您尝试执行以下操作:

""" main program """
import jaguar as jg
jg.read_excel()
由于在模块级找不到该函数,因此将导致错误。相反,您需要实例化一个对象,然后调用该方法:

""" main program """
import jaguar as jg
my_ob = jg.TheClass()
my_ob.read_excel()
或者,您也可以在模块级别(即类之外)定义函数,如果这对您正在尝试的操作有效的话。因此,jaguar.py的结构如下:

""" jaguar module does jaguar-y stuff """
class TheClass:
    def __init__(self):
        # Do object initialization stuff
    def read_excel(self):
        print('In read_excel()')
""" jaguar module does jaguar-y stuff """
def read_excel():
    print('In read_excel()')

class TheClass:
    def __init__(self):
        # Do object initialization stuff
后一个示例将允许您通过
jg.read\u excel()
调用read\u excel(),如上面的第一个主程序示例所示


浏览上的教程可能会有所帮助。

显示代码。并且只使用相关标签:这似乎与熊猫无关。
read\u excel
是模块级方法还是捷豹
中某个类中的方法?您可以使用
dir(jg)
@C.Nivs进行检查:这是我在jaguar module中名为excel的类下创建的一个函数