我在python 3中有以下代码:
class Position:
def __init__(self, x: int, y: int):
self.x = x
self.y = y
def __add__(self, other: Position) -> Position:
return Position(self.x + other.x, self.y + other.y)
Run Code Online (Sandbox Code Playgroud)
但是我的编辑器(PyCharm)说无法解析引用位置(在_add__方法中).我该如何指定我希望返回类型是类型__add__?
编辑:我认为这实际上是一个PyCharm问题.它实际上使用其警告中的信息和代码完成

但如果我错了,请纠正我,并需要使用其他语法.
除非我弄错了,在Python中创建一个函数是这样的:
def my_func(param1, param2):
# stuff
Run Code Online (Sandbox Code Playgroud)
但是,您实际上并未提供这些参数的类型.另外,如果我记得,Python是一种强类型语言,因此,似乎Python不应该让你传递一个与函数创建者所期望的不同类型的参数.但是,Python如何知道函数的用户是否传递了正确的类型?假设函数实际使用参数,程序是否会因错误类型而死亡?你必须指定类型吗?
给定一个带有辅助方法进行初始化的类:
class TrivialClass:
def __init__(self, str_arg: str):
self.string_attribute = str_arg
@classmethod
def from_int(cls, int_arg: int) -> ?:
str_arg = str(int_arg)
return cls(str_arg)
Run Code Online (Sandbox Code Playgroud)
是否可以注释方法的返回类型from_int?
我试过两个cls,TrivialClass但是PyCharm将它们标记为未解决的引用,这在那个时间点听起来很合理.
python ×3
pycharm ×2
function ×1
parameters ×1
python-3.5 ×1
python-3.x ×1
type-hinting ×1
typing ×1