這是this thread中提到的那種,但從未解決。PyCharm類型提示不適用於重載的操作員
我有一個載體類:
class Vector2D(object):
# ...
def __add__(self, other):
return Vector2D(self.x + other.x, self.y + other.y)
# ...
def __truediv__(self, scalar):
return Vector2D(self.x/scalar, self.y/scalar)
然後,我有一個函數,它的類型是暗示接受的Vector2D:
def foo(vector):
"""
:type vector: Vector2D
"""
print("<{}, {}>".format(vector.x, vector.y))
如果我嘗試調用foo
像這樣,我得到一個奇怪的警告說"Expected type 'Vector2D', got 'int' instead"
:
foo((Vector2D(1, 2) + Vector2D(2, 3))/2)
然而,它工作正常w母雞我運行它,並沒有任何警告,當我明確地使用的Vector2d
方法:
foo(Vector2D(1, 2).__add__(Vector2D(2, 3)).__truediv__(2))
請注意:我使用Python 2.7,但我有from __future__ import division, print_function
在我的所有模塊的頂部。任何幫助或建議表示讚賞。
我使用PyCharm 4.5.4社區版,所以這可能與它有關。我嘗試了其他解決方案,但它們不適合我。我想這只是升級的另一個原因:D。 –