标签: typing

如何指定方法的返回类型与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万
查看次数

"无类型"是否也意味着学术CS世界中的"动态类型"?

我正在阅读一个幻灯片,上面写着"JavaScript是无类型的".这与我认为的真实相矛盾,所以我开始尝试去学习更多.

JavaScript的每个答案都是一种无类型的语言?他说,JavaScript 不是无类型的,并且提供了各种形式的静态,动态,强大和弱类型的例子,这些都是我熟悉和满意的......所以这不是可行的方法.

所以我问了JavaScript的创建者Brendan Eich,他说:

学术类型使用"无类型"来表示"无静态类型".他们足够聪明,可以看到价值观有类型(呃!).背景问题.

以学术为中心的计算机科学人员是否使用"无类型"作为"动态类型"的同义词(并且这是有效的吗?)还是有更深层次的东西让我失踪?我同意布兰登的观点,认为背景很重要,但任何解释的引用都会很棒,因为我目前的"去"书并没有在这个主题上发挥作用.

我想要明确这一点,以便我可以提高我的理解,因为即使维基百科也没有提到这种替代用法(无论如何我都能找到).如果我错了,我不想在将来使用该术语或质疑该术语的使用:-)

(我也看到一个顶级的Smalltalker说Smalltalk也是"无类型的",所以这不是一次性的,这就是让我完成这个任务!:-))

javascript computer-science types typing

164
推荐指数
6
解决办法
2万
查看次数

Dvorak打字是否适合编程?

我一直在寻找提高工作效率的方法,而且我一直在阅读很多关于使用Dvorak键盘打字的知识.

看起来这对于写普通散文会更有成效,但编程呢?

我怀疑它会有效,因为在编程中使用分号,冒号,括号和&符号比在每天打字时更常见.

有没有人有这方面的经验?

dvorak typing

109
推荐指数
8
解决办法
4万
查看次数

Vim用户,你在哪里休息你的右手?

长期使用vim的用户,您是将手指放在正常模式jkl;还是hjkl处于正常模式?

标准触摸打字告诉我们右手的原位,食指上有食指j,所以你的手指都在jkl;.

但标准的vim运动键是hjkl.

10年后我回到了vim (omg,当我没有注意的时候我老了)并发现自己倾向于hjkl......但是这样就更难输入右上角的字母,大括号等等.我想训练自己现在使用最有效/最实用的方法,而不是以后重新训练.

长期,铁杆vim用户,最佳做法是什么?


注意:

  1. 触摸打字员如何在vi中导航更重叠
  2. 我认为这通过了"主观"测试,因为它是故意培养无意识的最佳实践,而不仅仅是关于人们的偏好

keyboard vim ergonomics touch-typing typing

108
推荐指数
5
解决办法
2万
查看次数

输入*args和**kwargs的注释

我正在尝试使用抽象基类的Python类型注释来编写一些接口.有没有办法注释可能的类型*args**kwargs

例如,如何表达函数的合理参数是一个int还是两个inttype(args)给人Tuple所以我的猜测是,注释类型Union[Tuple[int, int], Tuple[int]],但是这是行不通的.

from typing import Union, Tuple

def foo(*args: Union[Tuple[int, int], Tuple[int]]):
    try:
        i, j = args
        return i + j
    except ValueError:
        assert len(args) == 1
        i = args[0]
        return i

# ok
print(foo((1,)))
print(foo((1, 2)))
# mypy does not like this
print(foo(1))
print(foo(1, 2))
Run Code Online (Sandbox Code Playgroud)

来自mypy的错误消息:

t.py: note: In function "foo":
t.py:6: error: Unsupported operand types for + ("tuple" and "Union[Tuple[int, int], Tuple[int]]") …
Run Code Online (Sandbox Code Playgroud)

python typing typechecking type-hinting

99
推荐指数
7
解决办法
3万
查看次数

有没有办法"提取"TypeScript接口属性的类型?

假设库X的打包文件包含一些接口.

interface I1 {
    x: any;
}

interface I2 {
    y: {
        a: I1,
        b: I1,
        c: I1
    }
    z: any
}
Run Code Online (Sandbox Code Playgroud)

为了使用这个库,我需要传递一个与其完全相同的对象I2.y.我当然可以在源文件中创建相同的界面:

interface MyInterface {
    a: I1,
    b: I1,
    c: I1
}

let myVar: MyInterface;
Run Code Online (Sandbox Code Playgroud)

但是后来我承担了使用库中的那个保持最新的负担,而且它可能非常大并导致大量代码重复.

因此,有没有办法"提取"接口的这个特定属性的类型?类似的东西let myVar: typeof I2.y(不起作用,导致"找不到名字I2"错误).提前致谢.


编辑:在TS Playground中玩了一下后,我注意到以下代码完全符合我的要求:

declare var x: I2;
let y: typeof x.y;
Run Code Online (Sandbox Code Playgroud)

但是,它需要x声明一个冗余变量.我正在寻找一种方法来实现这个没有这个声明.

typing typescript definitelytyped

53
推荐指数
4
解决办法
2万
查看次数

无论如何都要在EditText的左上角开始输入EditText?

我有一个EditText属性:

android:minLines="3"
Run Code Online (Sandbox Code Playgroud)

但是,当我开始输入时,它会在中间键入EditText.

有没有办法让这个开始在该EditText区域的左上角打字?

android center typing android-edittext

51
推荐指数
1
解决办法
3万
查看次数

为什么动态打字经常与口译语言相关联?

简单的问题:我在编译语言(如C++/Java)和Python/Javascript等解释语言中进行了大量编程(专业和个人).我个人发现,当我使用静态类型语言编程时,我的代码几乎总是更强大.但是,我遇到的几乎所有解释语言都使用动态类型(PHP,Perl,Python等).我知道为什么编译语言使用静态类型(大多数时候),但我无法弄清楚解释语言设计中对静态类型的厌恶.

为什么陡峭断开?它是解释语言性质的一部分吗?OOP?

type-systems language-design static-typing typing dynamic-typing

40
推荐指数
2
解决办法
5445
查看次数

pythontyping.Callable到底是什么?

我看过typing.Callable,但没有找到任何有用的文档。到底是什么typing.Callable

python typing

40
推荐指数
3
解决办法
5万
查看次数

有编译的*编程语言是否具有动态,甚至是弱类型?

我想知道是否有一种编程语言可编译为机器代码/二进制文件(不是字节码然后由VM执行,在考虑打字时完全不同),它具有动态和/或弱类型,例如:

想一下编译语言,其中:

  • 变量不需要声明
  • 可以在运行时创建变量
  • 函数可以返回不同类型的值

问题:

  • 有这样的编程语言吗?
  • (为什么不?

我认为一种动态但强大的类型化编译语言真的能感觉到,但它有可能吗?

programming-languages static-typing typing dynamic-typing

36
推荐指数
4
解决办法
7594
查看次数