Python 类 __init__ 函数的 PyCharm 模板

问题描述 投票:0回答:4

我有一个带有几个初始化变量的Python类:

class Foo(object):
    def __init__(self, d1, d2):
        self.d1 = d1
        self.d2 = d2

有没有办法在 PyCharm 中自动创建此代码,这样我就不必显式输入:

self.dn = dn

这种模式在我的代码中经常发生。有没有更好的(Pythonic)方法来初始化类?

我已经看过这篇文章(在Python中进行自动属性分配的最佳方法是什么,这是一个好主意吗?),但我不想使用装饰器,因为它使代码可读性较差。

python class attributes pycharm
4个回答
6
投票

您可以从制作自定义实时模板开始。我不确定是否可以通过这种方式自动生成可变数量的参数,但是,对于两个构造函数参数,实时模板可能如下所示:

class $class_name$:
    def __init__(self, $arg1$, $arg2$):
        self.$arg1$ = $arg1$
        self.$arg2$ = $arg2$
$END$

这就是我在 PyCharm 中设置的方式:


或者,您可以更改设置实例属性的方式并将其概括为 N 个参数,请参阅:


5
投票

我学到了另一种方法来解决这个问题。

  • 将光标移至参数
  • 按 alt + Enter
  • 选择将字段“[arg]”添加到单个参数的类中 - 或 -
  • 按向右箭头键打开子菜单
  • 选择修复所有“未使用的本地”问题以添加所有参数


0
投票

部分回答我自己的问题:

非常方便,谢谢。在版本 2020.2 中,“修复全部”选项消失了。 有谁知道怎么加回来吗?

我还没有找到一种方法来添加丢失的选项,但有一种解决方法可以完成相同的任务,将所有丢失的字段添加到类中。

答案来自这篇文章:https://stackoverflow.com/a/62060345/1067293

  • 将鼠标光标放在未使用的参数上,然后按 Alt+Enter。
  • 然后点击向右箭头并选择“运行检查...”

  • 在新的浮动窗口上选择文件范围。

  • 检查面板将出现在底部。
  • 在左侧选择文件。
  • 然后在右侧单击“将字段添加到类”按钮。

它有点过于复杂,但当你有多个参数时仍然会派上用场。


0
投票

稍后,但我想我找到了一个解决方案,不确定是否有捷径,但我的解决方案是将参数放入 init 中,如 $args$ 或类似的东西,并且在 init 定义下方,实例变量必须放置类似 $argsSplit$ 的内容,并在该变量的表达式中放置以下代码: groovyScript("def result = ''; _1.split(', ').each{ item -> result = result + 'self.' + item + ' = ' + item + System.lineSeparator() + ' '};返回结果;”,参数) 抱歉,如果我拼写错误,英语不是我的母语 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.