相关疑难解决方法(0)

如何指定方法的返回类型与python中的类本身相同?

我在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 typing pycharm python-3.x python-3.5

277
推荐指数
7
解决办法
4万
查看次数

名称未在类型注释中定义

我正在创建一个python线性代数模块,用于娱乐和练习语言.我最近尝试向模块添加类型注释,如下所示:

class Vector:
     # Various irrelevant implementation details
     def __add__(self, other: Vector) -> Vector:
        # More implementation details....
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试导入它时,它会吐出一个NameError: Name 'Vector' is not defined.我承认这个问题已经在这里以一种形式得到了回答,但它似乎并没有完全为我的情况提供答案.

我想知道的是什么:

  • 我已经在这个文件中逐字地定义了这个类.为什么说这个名字没有定义?
  • 如何Vector以这样的方式定义它可以用于注释(作为a type)?

python type-hinting python-3.x

30
推荐指数
2
解决办法
6258
查看次数

当值是cls的实例时,你能注释返回类型吗?

给定一个带有辅助方法进行初始化的类:

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 type-hinting pycharm

19
推荐指数
4
解决办法
2658
查看次数

标签 统计

python ×3

pycharm ×2

python-3.x ×2

type-hinting ×2

python-3.5 ×1

typing ×1