所以我正在创建一个点类,我将用它来绘制形状。我首先创建我的点,如果 x 和 y 值不是 float ,则会引发错误:
def __init__(self, x, y):
if not isinstance(x, float):
raise Error ("Parameter \"x\" illegal.")
if not isinstance(y, float):
raise Error ("Parameter \"y\" illegal.")
self.x = x
self.y = y
然后在这个方法中我将这些值转换为字符串形式的 int 。
def __str__(self):
return int(round(self.x))
问题出在上述方法上,它给了我错误:
AttributeError: Point instance has no attribute 'x'
但是 x 应该存在,所以我不知道为什么它会给我这个错误。即使我使用 y 它也说 y 不存在。那么为什么这个方法会给我这个错误呢?
最佳答案
如果问题中的缩进实际上是正确的,则永远不会设置x
和y
。代码指出:
if not isinstance(y, float):
raise Error ("Parameter \"y\" illegal.")
self.x = x
self.y = y
如果 if
的计算结果为 True
,则会引发异常,并且永远不会到达这些行。如果它的计算结果为False
,则整个 block 不会被执行。
你的意思可能是这样的:
if not isinstance(x, float):
raise Error ("Parameter \"x\" illegal.")
self.x = x
if not isinstance(y, float):
raise Error ("Parameter \"y\" illegal.")
self.y = y
关于Python-属性错误: Point instance has no attribute 'x' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35824169/