从对象中调用属性

时间:2016-01-20 01:42:28

标签: python-3.x object

我试图找出为什么我无法从对象中回忆起属性。我确定我犯了一个简单的错误,并希望这不是一个重复的问题。继承人在哪里:

Class Vector:
    def __init__(self, cor_x, cor_y, cor_z):
        self.x = cor_x
        self.y = cor_y
        self.z = cor_z

    def x(self):
        return self.x

我想要的是什么:

v1 = Vector(1,2,3)
v1.x()
>>>1

我得到了什么:

>>>v1.x()
>>>  TypeError: 'int' object is not callable

我确定我在某处犯了一个简单的错误。 谢谢。

1 个答案:

答案 0 :(得分:0)

您同时拥有变量self.x和方法self.x():它们会发生冲突。由于self.x已分配给cor_x,即整数1,因此TypeError关于int对象无法调用。

使变量成为私有(受保护),并将该方法用作属性以返回变量。

Class Vector:
    def __init__(self, cor_x, cor_y, cor_z):
        self._x = cor_x
        self._y = cor_y
        self._z = cor_z

    def x(self):
        return self._x

或者,您应该只重命名方法Vector.x()。除非你真的想让Vector.x成为一个完整的属性,在这种情况下你不会把它称为方法,而只是像属性一样访问它。这是一个由您自己决定的设计决策,需要更广泛的代码和知识背景知识。项目