首页 > 解决方案 > python AttributeError 在我正在导入的模块中找不到类

问题描述

我有一个包,其中包含一个名为 rigfuncs3.py 的模块

SDNpackage/
    __init__.py
    rigfuncs3.py

代码:

class rig():

    def __init__(self, rigNumber, leftNozPlate, rightNozPlate, bottomNozPlate, row1_centre_focus):

        self.rigNumber = rigNumber
        self.leftNozPlate = leftNozPlate
        self.rightNozPlate = rightNozPlate
        self.bottomNozPlate = bottomNozPlate
        self.row1_centre_focus = row1_centre_focus

    def getRigName(self):
        return self.rigNumber

名为 play_04.py 的脚本从包中导入模块 rigfuncs。代码:

from SDNpack2 import rigfuncs3

instantiation = rigfuncs3.rig(1,1000.0, 2000.0, 3000.0, 4000.0)
print(dir(instantiation))

rig_num = instantiation.getRigName()

运行 play_04 时出现错误:

AttributeError:“rig”对象没有属性“getRigName”

我不知道为什么,有什么想法吗?

标签: pythonclassmodulepackageattributeerror

解决方案


我仍然无法复制您遇到的问题。

我试图复制您声明的文件夹结构,如下所示:

C:.
│   play_04.py
│
└───SDNpack2
        rigfuncs3.py
        __init__.py     <--- empty file

rigfuncs3.py:

class rig():
    def __init__(self, rigNumber, leftNozPlate, rightNozPlate, bottomNozPlate, row1_centre_focus):
        self.rigNumber = rigNumber
        self.leftNozPlate = leftNozPlate
        self.rightNozPlate = rightNozPlate
        self.bottomNozPlate = bottomNozPlate
        self.row1_centre_focus = row1_centre_focus

    def getRigName(self):
        return self.rigNumber

play_04.py:

from SDNpack2 import rigfuncs3

instantiation = rigfuncs3.rig(1, 1000.0, 2000.0, 3000.0, 4000.0)
print(instantiation)
print(instantiation.__dict__)

rig_num = instantiation.getRigName()
print(rig_num)

我将您的调用更改dir(instantiation)instantiation.__dict__仅显示对象的属性,而不是所有内置变量。

输出:

<SDNpack2.rigfuncs3.rig object at 0x02B1E628>
{'rigNumber': 1, 'leftNozPlate': 1000.0, 'rightNozPlate': 2000.0, 'bottomNozPlate': 3000.0, 'row1_centre_focus': 4000.0}
1

我可以复制问题本身的唯一方法是,如果我更改缩进,getRigName或者将其全部从类中删除。

您的代码按照您编写的方式工作,我在这里没有看到任何实际问题。


推荐阅读