Python:类实例;“没有属性”;传递给另一个模块中的函数时

Python:类实例;“没有属性”;传递给另一个模块中的函数时,python,class,inheritance,import,module,Python,Class,Inheritance,Import,Module,我在将类实例传递给另一个模块中的函数时遇到问题 代码如下: (在模块“基座”中): (在“物理”模块中): 当我将“基本”模块加载到交互式解释器中(或在“基本”模块中创建CellsArray实例)时,一切似乎都很好: (交互式口译员示例): 但是,如果我添加打印类型(单元格);将cells.getCollidingCells打印到collisionsTest函数(在单元格中的c的之前…),它返回: <class 'base.CellsArray'> <bound method

我在将类实例传递给另一个模块中的函数时遇到问题

代码如下:
(在模块“基座”中):

(在“物理”模块中):

当我将“基本”模块加载到交互式解释器中(或在“基本”模块中创建CellsArray实例)时,一切似乎都很好:
(交互式口译员示例):

但是,如果我添加
打印类型(单元格);将cells.getCollidingCells
打印到collisionsTest函数(在单元格中的c的
之前…
),它返回:

<class 'base.CellsArray'>
<bound method CellsArray.getCollidingCells of blist([<base.Cell instance at 0x7f2e4a7d1638>, ...])>

我觉得导入“物理”模块有些问题,但我几乎尝试了导入该模块的所有可用方法,但仍然会出现错误。 模块“physics”使用模块“base”中的一些变量和类,所以我不能简单地删除“
import base


有没有办法解决这个问题,或者我必须把所有的函数和常数从“物理”移回“基”?

单元格
是一个
单元格数组
的列表,但你希望它是一个单独的
单元格数组

也许
collisionsTest
应该是:

def collisionsTest(cells):
    for c in cells:
        c.getCollidingCells(c.getCellByCoords(c.x, c.y))

请提供一个简短、完整的程序来演示错误。有关更多信息,请参见或,行
cells.getCollidingCells(cells.getCellByCoords(c.x,c.y))
,cells是列表,而不是CellsArray。如果需要更多调试帮助,您必须向我们显示调用
collisionTest
的位置。
CellsArray
本身就是一个列表。它扩展了
blist
类,该类扩展了基本Python
list
blist
存储在外部的第三方Python库中。否,
collisionsTest
调用给定CellsRay(
cells
)的
GetCollisdingCells
方法。CellsArray本身按坐标查找单元格并返回冲突单元格。从您的错误消息中,我可以向您保证,
单元格
不是
CellsArray
。它是一个
列表
。请提供一个简短完整的程序来演示错误。我已经提到,
CellsArray
确实是一个列表:它扩展了
blist
类。尽管如此,
cells
不是
CellsArray
,它是一个
列表。您可以通过将
打印类型(单元格)
添加到
冲突测试中来说服自己。
>>> a = CellsArray([])
>>> a.append(Cell())
>>> a.getCollidingCells(a[0])
#returns None
>>> a.getCollidingCells
<bound method CellsArray.getCollidingCells of blist([<__main__.Cell instance at 0x7f847e8fa170>])>
    cells.getCollidingCells(cells.getCellByCoords(c.x, c.y))
AttributeError: 'list' object has no attribute 'getCollidingCells'
<class 'base.CellsArray'>
<bound method CellsArray.getCollidingCells of blist([<base.Cell instance at 0x7f2e4a7d1638>, ...])>
def collisionsTest(cells):
    for c in cells:
        c.getCollidingCells(c.getCellByCoords(c.x, c.y))