我遇到的情况是,在第一类中我声明了数组,然后将其传递给另一个对象,该对象将打印此数组中元素的名称。它有效,但是当我输入“汽车”时。在ReadCarNames ide中不建议我使用“名称”吗?我正在wing ide 4 pro中尝试它。我可以使用方法ReadCarNames铸造汽车吗?

########################################################################
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

最佳答案

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

您的IDE(机翼)不确定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'逻辑。

if 0: assert isinstance(car, Car)


您目前无法告诉Wing,列表/元组/等仅包含一种类型的对象及其含义,但这在他们的计划中,并且将使用类似的语法。

10-04 11:21