Skip to main content
 首页 » 编程设计

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

2025年05月04日13kevingrace

我有一种情况,在第一类中我声明了数组,并将它传递给另一个对象,该对象打印该数组中元素的名称。它有效,但是当我输入“汽车”时。在 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 (Wing) 不确定 cars 中的对象是什么类型,但是您可以告诉它 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 列表/元组/等仅包含一种类型的对象及其内容,但它在他们的计划中并将使用类似的语法。