在
考虑到这是一个必选参数,我希望它是至关重要的东西。在 PEP-484 中引入类型提示时,通常将该参数设置为分配给对象的变量名的字符串:
typing
模块中,TypeVar
和 NewType
都需要一个字符串作为第一个位置参数,该字符串将用作所创建对象的 __name__
属性。那么这里的 __name__
的目的是什么呢?考虑到这是一个必选参数,我希望它是至关重要的东西。在 PEP-484 中引入类型提示时,通常将该参数设置为分配给对象的变量名的字符串:
T = TypeVar('T', int, float, complex)
但是,我无法真正确定这个在 CPython
中如何被用于 typing.py
。在我的测试中,用任何其他字符串替换该字符串似乎不会导致任何问题。
class T: pass
中的T
。声明 TypeVar 不会在运行时设置类名,因此我们通过给予 nametag 来访问 TypeVar 的确切名称来帮助自己。但是,正如您正确注意到的那样,没有任何强制要求我们这样做。这是否解决了问题,或者您的问题有不同的意思? - Arne__name__
在模块级别上大多有用,在那里我们进行导入和普遍使用的if __name__ == "__main__": pass
。 对于类名,我将不得不在调用或实例化类时使用它,但对于TypeVar
和NewType
,这是通过已分配的变量名称完成的,因此在类型函数的上下文中,该属性如何使用? - Melvin