Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-AttributeError:Point实例没有属性';x';_Python - Fatal编程技术网

Python-AttributeError:Point实例没有属性';x';

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

所以我正在制作一个点类,我将使用它来绘制形状。我从创建点开始,如果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
然后在这个方法中,我将值转换成字符串形式的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
方法确实需要返回一个字符串。