PEP 484规避“任何”匹配的所有类型

时间:2018-11-30 05:27:45

标签: python-3.x typehints

class LibraryClass:
    def __init__(self):
        self.y = 34

    @property
    def x(self):
        return self._x

class MyClass:
    pass

myObj = MyClass()
libraryObj = LibraryClass()

def myFunc(x: MyClass):
    print("Got it")

myFunc(myObj) #Rightly UnFlagged
myFunc(34) #Rightly Flagged
myFunc(libraryObj.y) #Rightly Flagged
myFunc(libraryObj.x) #Wrongly Unflagged. The default return type is Any

在上面的代码中,用户功能myFunc应该只接受MyClass类型的参数x。但是,由于在PEP 484中如何定义“ Any”类型,因此“ Any”类型也被匹配(在最后一行)。是否有办法避免这种情况?

我知道这是设计使然; “任何”应该与任何签名匹配;如果“ Any”是显式定义的类型,这是有道理的,但是,在上述示例中,“ Any”来自库对象,因为它是函数的默认返回类型,因此,我。

谢谢

0 个答案:

没有答案