Python-AttributeError:Point实例没有属性';x';
所以我正在制作一个点类,我将使用它来绘制形状。我从创建点开始,如果x和y值不是浮点值,则会引发一个错误:Python-AttributeError:Point实例没有属性';x';,python,Python,所以我正在制作一个点类,我将使用它来绘制形状。我从创建点开始,如果x和y值不是浮点值,则会引发一个错误: def __init__(self, x, y): if not isinstance(x, float): raise Error ("Parameter \"x\" illegal.") if not isinstance(y, float): raise Error ("Parameter \"y\" il
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
,则不执行整个块
你的意思可能是:
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
只有在出现错误时才初始化
x
和y
,或者从不初始化
你想要的是:
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
这解决了一个问题,但现在我得到了另一个错误,上面写着TypeError:str返回了非字符串(type int)。你真的应该在这个问题上打开一个单独的问题(这是无关的),但我想你想要
返回str(int…)
。您的\uuu str\uu
方法确实需要返回一个字符串。