python中缺少自动完成/转换的问题

2024-09-30 16:28:04 发布

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

我有一种情况,在第一个类中,我声明数组,并将其传递给另一个对象,该对象打印该数组中元素的名称。它可以工作,但是当我在ReadCarNames中输入'car'时,ide不建议我输入'name'?我正在wing ide 4 pro中试用。我可以在方法自述文件中铸造汽车吗?在

########################################################################
class MyClass:
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        cars=[]
        cars.append(Car('bmw'))
        cars.append(Car('audi'))
        reader=Reader()
        reader.ReadCarNames(cars)

########################################################################
class Car:
    """"""

    #----------------------------------------------------------------------
    def __init__(self,name):
        self.name=name



########################################################################
class Reader:
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
    def ReadCarNames(self,cars):
        for counter,car in enumerate(cars):

            print str(counter) +' '+ car.name

Tags: 对象nameselfinitdef数组idecar
3条回答

请看这里: http://www.wingware.com/doc/edit/helping-wing-analyze-code

您的IDE(Wing)并不确定cars中是什么类型的对象,但是您可以使用assert语句告诉它car是什么,并且它将按照您想要的方式自动完成。如果你愿意的话,你可以把它看作是为Wing的眼睛铸造字体。在

class Reader:
    def __init__(self):
        """Constructor"""
    def ReadCarNames(self,cars):
        for counter,car in enumerate(cars):
            assert isinstance(car, Car)        # this trains Wing
            print str(counter) +' '+ car.name  # autocompletion will work here

或者,如果您不想让断言一直启动,您可以将其包装在Wing的SourceAssistant使用但python不会执行的“if 0”逻辑中。在

^{pr2}$

目前您不能告诉Wing一个list/tuple/etc只包含一种类型的对象以及它是什么,但它在他们的计划中,并且将使用类似的语法。在

IDE不知道从枚举返回的类型,因此在这种情况下无法执行自动完成。它也不知道cars列表包含Car。在

在Wing IDE中工作的一个好方法是设置一个断点,运行到它,然后在编辑器(在活动调试堆栈上的代码中)和debug Probe中获得源于运行时的分析。这在“静态和运行时分析”屏幕转换中进行了说明,从最后一个开始到http://wingware.com/wingide/code-intelligence

相关问题 更多 >