初始化时,对象是否可以设置为None
,但仍属于某个类?
class Foo:
def do_stuff():
pass
bar_1 = Foo()
bar_2 = None
我想到的具体目的是我希望bar_2
可以在不同的模块中使用,但是可以在以后定义它(出于不相关的原因)。当你运行代码时,它工作得很好。但是,我的IDE不知道bar_2
属于Foo
类型,因此不会像do_stuff()
那样向我显示bar_1
作为自动完成选项,实例
我知道python不是一种强类型语言,但我想如果有一种方法可以告诉python bar_2
类型为Foo
,它可以解决自动完成不显示的问题
如果有另一种方法让我的IDE(特别是PyCharm)了解bar_2
的课程,我很高兴知道。
答案 0 :(得分:1)
尝试使用type hints,假设类型一致并且您正在使用python 3.5。
为了获得智能感知功能,JetBrains有一个legacy type提示系统,适用于所有版本的python。
答案 1 :(得分:1)
如果您使用的是Python 3.5,则可以使用类型提示。对于此特定用途,您需要将其放在type comment:
中bar_2 = None # type: Foo
早期版本的Python没有内置的方法来做到这一点,虽然我认为支持该语言的早期版本和更高版本的IDE可能允许类型注释影响它的行为,即使你正在使用的Python版本不支持完整类型提示语义。
答案 2 :(得分:0)
当它应该是foo的一个实例时,你可以做到
assert isinstance(bar_2,Foo)
# anything below this and in scope will autocomplete bar_2 with Foo's methods
一般来说,这不是一个很好的做法,应该避免,但它可以在大多数 IDE(包括pycharm)中启用自动完成功能