我遇到的情况是,在第一类中我声明了数组,然后将其传递给另一个对象,该对象将打印此数组中元素的名称。它有效,但是当我输入“汽车”时。在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,列表/元组/等仅包含一种类型的对象及其含义,但这在他们的计划中,并且将使用类似的语法。