PyCharm能否自动生成eq和hash实现?

2024-04-20 13:56:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个PyCharm新手,但长期使用IntelliJ。在IntelliJ中,编写类定义时,IDE可以基于实例变量自动生成构造函数equals()方法和hashCode()方法。这不仅有助于保存类型,而且有助于防止意外错误,并有助于自动抛出一些equals()hashCode()最佳实践。

考虑到产品来自同一家公司,我希望皮查姆也能这样做。在搜索了大量的文档之后,我找不到关于__eq__()__hash__()的任何东西。当然,Python实例变量没有显式指定,但我希望生成器可以遵循一种约定,比如将所有__init()__参数作为潜在的实例变量。至于__init__(),I found something that will automatically add instance variable settings进入__init__(),但是这种方法似乎比仅仅键入更麻烦,而且它甚至没有将实例变量作为参数添加到__init__()签名中。

我是否在文档中遗漏了什么,或者可能有一个插件可以做到这一点?

更新:为了清楚起见,我正在寻找能够生成这些方法的实际实现的东西。也就是说,如果我有一个名为Point的类,而PyCharm知道我的类有xy实例变量,那么它会自动为__eq__()方法生成这个:

def __eq__(self, other):
    if not isinstance(other, Point):
        return NotImplemented
    elif self is other:
        return True
    else:
        return self.x == other.x and self.y == other.y

在IntelliJ中很容易实现相同的功能。


Tags: 实例方法文档self参数returninitpycharm