我试图找出为什么我无法从对象中回忆起属性。我确定我犯了一个简单的错误,并希望这不是一个重复的问题。继承人在哪里:
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
我确定我在某处犯了一个简单的错误。 谢谢。
答案 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
成为一个完整的属性,在这种情况下你不会把它称为方法,而只是像属性一样访问它。这是一个由您自己决定的设计决策,需要更广泛的代码和知识背景知识。项目