Python 3.6:使用对象实例名称来引发错误

问题描述 投票:1回答:1

我正在尝试使用Python 3.6,Tkinter,特别是非pygame(或任何其他3D图形引擎)创建一个3-d图形引擎,作为大学任务的一部分。

在这个项目中,我不得不创建一个“矩阵”类,它允许我轻松地创建和操作mxn矩阵。我相信这对于转换矢量至关重要,以便在2D显示器上显示项目。

我希望我的Matrix类包含的一种方法是矩阵乘法。我认为在执行此方法时要检查的第一个(也是最重要的)是确保第一个矩阵的宽度等于第二个矩阵的高度,因为这是将两个矩阵相乘的必要条件。

如果两个矩阵不能相乘,我会引发一个TypeError,我想说

“矩阵乘法不可能。{第一矩阵的名称}的宽度:({value})不等于{第二矩阵的名称}的高度:( {value})”。

例如

apple = Matrix(2, 3, List_of_values)
#creates a matrix instance that is 2x3 and contains 6 values from a list

pear = Matrix(4, 3, Another_list_of_values)
#creates a matrix that is 4x3 and contains 12 values from another list

apple.multiply(pear)

当一切正常时,这应该尝试执行{apple x pear}数学运算,特别是苹果优先和梨秒

在这种情况下,乘法显然是不可能的:苹果是2高3宽,梨是5高3宽。我想提出一个错误:

TypeError: Matrix multiplication not possible: Width of apple (3) is not equal to height of pear (4)

相反,我明白了:

TypeError: Matrix multiplication not possible: Width of <__main__.Matrix object at 0x1056117b8> (3) is not equal to height of <__main__.Matrix object at 0x105618e80> (4)

我相信我需要在矩阵类中定义__name__属性,这样当调用apple .__ name__时,它会返回一个包含名称“apple”的字符串。这可能吗?这甚至是个好主意吗?我应该遵循更好的编码习惯吗?

谢谢

python python-3.x error-handling typeerror custom-errors
1个回答
0
投票

我想将这个问题标记为已回答:jonrsharpe在评论中的答案解释得很好,并且Bryan Oakley添加了一些有用的额外信息。谢谢你们俩。

© www.soinside.com 2019 - 2024. All rights reserved.