如何使用正确的自动补全编辑Python脚本?

2024-09-30 22:22:38 发布

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

我第一次尝试编辑python脚本,它让我抓狂:(。你知道吗

我有一些带有*.py文件的目录,我将其作为解释器路径添加到PyCharm中,以实现正确的自动完成。你知道吗

所以,我有课

class Sim():
     def __init__(self, *args, **kwargs):
        self._sim_info = None
我是java和C++程序员,我习惯于类变量。你知道吗

我知道,在脚本中,这个变量的值的类型是SimInfo。你知道吗

但是,当PyCharm的索引器为*.py文件编制索引时,他知道Sim.sim_infovar的值是None。但是如何在代码中指定呢

s1=Sim()
i=s1.sim_info

变量i具有类SimInfo的类型?你知道吗

也许我应该使用类似“编辑器点击”的东西来强制i.is_ghost自动完成?你知道吗

例如,代码

from simulation.sims.sim import Sim
from simulation.sims.sim_info import SimInfo
from simulation.sims.pregnancy.pregnancy_tracker import PregnancyOffspringData

s1=Sim()
i=s1.sim_info
i.is_ghos

其中i.is_ghos必须自动完成为i.is_ghost()。你知道吗

在这种情况下如何指定变量类型(可以通过类似编辑器提示的方式)?你知道吗

非常感谢!你知道吗


Tags: 文件frompyimportinfo脚本类型is
2条回答

可以使用@type docstring将type hinting与pycharm一起使用。你知道吗

def __init__(self, *args, **kwargs):
    # n.b., in your usage code you use `.sim_info`
    # but in your constructor you used `._sim_info`
    # since I didn’t see a prop get function, I assumed
    # that you meant `.sim_info`
    self.sim_info = None 
    """@type: SimInfo"""

或者

def __init__(self, *args, **kwargs):
    self.sim_info = None
    """:type SimInfo"""

如果类名不起作用,还可以指定类(包括模块)的完整路径。您还可以在PyCharm中使用PEP484来指定成员变量的类型:

def __init__(self):
    self.sim_info = None # type: SimInfo

Python 3.6版:

class Sim():
     def __init__(self, *args, **kwargs):
        self._sim_info: SimInfo = None

其他python:

class Sim():
     def __init__(self, *args, **kwargs):
        self._sim_info = None  # type: SimInfo

它叫“type hints

相关问题 更多 >