pythonspython-spyder编辑器的自动完成和带有s的修改类的检查

2024-10-01 17:23:43 发布

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

在google上花了几个小时之后,我学到了很多东西,但没有找到任何与以下内容相关的主题:

我目前正在通过工厂方法对动态创建的类进行编程。原因是,方法名应该根据单独的yaml文件填充。归结起来就是这个问题:

def create_class_with_dynamic_fuction_name(fun_name):
    def fun(self):
        print "Hello, I am fun"

    class X:
        pass

    setattr(X, fun_name, fun)
    return X

Kls1= create_class_with_dynamic_fuction_name('my_function_name')
kls1= Kls1()
kls1.my_function_name()

这个代码有效。但是,如果您在sypder的编辑器(aka。Spider IDE,spyderlib),则自动完成不会在其上下文框中显示my_function_name。也不可能通过Ctrl+I检查它,以便于检索docstring帮助。在

如果一个类是用type(classname, (), clsdict)创建的,也会出现同样的问题。在这种情况下,只能在自动完成上下文菜单中找到mro。在

我还发现,这不是上述闭包模式的问题。你能做到的

^{pr2}$

在这种情况下,my_function_name会正确显示,但这不是我的目标。在

我们很乐意在此提供任何建议,以实现动态方法名类的动态创建,这些方法名称在spyder的编辑器窗口中的自动完成功能中得到正确处理。在


Tags: 方法namemydefcreatewithfunctiondynamic
1条回答
网友
1楼 · 发布于 2024-10-01 17:23:43

Spyder dev here)抱歉,我们使用的完成库(称为rope)似乎不能对动态类和属性进行这种补全。在

欢迎您在我们的邮件列表中询问,如果我们能为您做些什么,我们将很乐意为您提供帮助。在

相关问题 更多 >

    热门问题