Python - AttributeError:点实例没有属性'x'
问题描述:
所以我正在制作一个点类,我将用它来绘制形状。我创建我的观点,并引发错误开始,如果x和y的值都没有花车:Python - AttributeError:点实例没有属性'x'
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
即固定一个问题,但现在我得到另一个错误,即类型错误:__str__返回非字符串(类型为int) –
你真的应该已经打开一个单独的问题在那(它是不相关的),但我想你想'返回str(int ...)'。你的'__str__'方法确实需要返回一个字符串。 –