如何使 VS Code 自动完成 Python Class 属性初始化
How to make VS Code Autocomplete Python Class Attribute Initialization
我在 Python 个项目中使用 VS Code。
当我写的时候:
class User:
def __init__(self, name, age, group=None):
我希望 VS Code 自动完成以下内容:
class User:
def __init__(self, name, age, group=None):
self.name = name
self.age = age
self.group = group
这可以用 VS Code 实现吗?我见过其他一些编辑这样做。这个有扩展吗?非常感谢!
我制作了一个 Python 版本,带有基于
的属性初始值设定项
"Class Initializer": {
"prefix": "cinit",
"body": [
"def __init__(self, ):",
"${1/([^,=]+)(?:=[^,]+)?(,\s*|)/\tself. = ${2:+\n\t}/g}"
],
"description": "Class __init__"
}
我使用空格进行缩进,在另一个片段中 \t
被转换为空格。
如果制表符未正确展开,请将 \t
替换为适当数量的空格。 (有2个\t
).
输入class name:
后回车你缩进1,然后输入前缀cinit
.
我试图做同样的事情,找到了你的答案,实现了它,因为我正在学习正则表达式,尽管尝试概括属性类型会很好。提出以下内容:
"Class Defininition": {
"prefix": "clss",
"body": [
"class ${1:ClassName}${2/[(][)]//g}:",
"\t'''\n\tClass : \n\t'''\n",
"\tdef __init__(self, ${4/([^self \s]*|)//g}):",
"\t\t${4/(^\w+|(?<=,\s)\w+)(.*?,\s|:.*|=.*|$)/self. = ${4:\n\t\t}/g}",
"\t\t[=10=]"
],
"description": "Initialize Class"
}
顺序是:
</code> - Class 名称(也填写默认文档字符串)</p>
<p><code>
- 继承(需要在括号中输入。这里我想将它们设置为默认值,如果为空则将其删除。我知道它仍然适用于空括号,但我做不到如果为空且未在 </code>)</p> 中输入,则删除
<p><code>
- Class 描述
</code> - 属性声明,包括按照 <a href="https://docs.python.org/3/library/typing.html" rel="nofollow noreferrer">Support for type hints</a></p> 中的语法输入
<p>示例:</p>
<pre><code>class ClassName:
'''
Class ClassName:
'''
def __init__(self, foo, bar: int, baz, default=10):
self.foo = foo
self.bar = bar
self.baz = baz
self.default = default
我在 Python 个项目中使用 VS Code。
当我写的时候:
class User:
def __init__(self, name, age, group=None):
我希望 VS Code 自动完成以下内容:
class User:
def __init__(self, name, age, group=None):
self.name = name
self.age = age
self.group = group
这可以用 VS Code 实现吗?我见过其他一些编辑这样做。这个有扩展吗?非常感谢!
我制作了一个 Python 版本,带有基于
"Class Initializer": {
"prefix": "cinit",
"body": [
"def __init__(self, ):",
"${1/([^,=]+)(?:=[^,]+)?(,\s*|)/\tself. = ${2:+\n\t}/g}"
],
"description": "Class __init__"
}
我使用空格进行缩进,在另一个片段中 \t
被转换为空格。
如果制表符未正确展开,请将 \t
替换为适当数量的空格。 (有2个\t
).
输入class name:
后回车你缩进1,然后输入前缀cinit
.
我试图做同样的事情,找到了你的答案,实现了它,因为我正在学习正则表达式,尽管尝试概括属性类型会很好。提出以下内容:
"Class Defininition": {
"prefix": "clss",
"body": [
"class ${1:ClassName}${2/[(][)]//g}:",
"\t'''\n\tClass : \n\t'''\n",
"\tdef __init__(self, ${4/([^self \s]*|)//g}):",
"\t\t${4/(^\w+|(?<=,\s)\w+)(.*?,\s|:.*|=.*|$)/self. = ${4:\n\t\t}/g}",
"\t\t[=10=]"
],
"description": "Initialize Class"
}
顺序是:
</code> - Class 名称(也填写默认文档字符串)</p>
<p><code>
- 继承(需要在括号中输入。这里我想将它们设置为默认值,如果为空则将其删除。我知道它仍然适用于空括号,但我做不到如果为空且未在 </code>)</p> 中输入,则删除
<p><code>
- Class 描述
</code> - 属性声明,包括按照 <a href="https://docs.python.org/3/library/typing.html" rel="nofollow noreferrer">Support for type hints</a></p> 中的语法输入
<p>示例:</p>
<pre><code>class ClassName:
'''
Class ClassName:
'''
def __init__(self, foo, bar: int, baz, default=10):
self.foo = foo
self.bar = bar
self.baz = baz
self.default = default