如何为python中的参数分配类型?
How to assign a type to a parameter in python?
我有一个名为 triangulo 的 class 和一个名为 coord 的 class。所以,为了创建一个新的三角形实例,我传递了三个顶点,比如
t= triangle( V1, V2, V3)
所以,为了文档,我想这样写 class 三角形
class triangulo( object ):
def __init__(self, a:coord, b:coord, c:coord)->None:
"""Constructor
"""
self.A= a
self.B= b
self.C= c
class coord( object ):
def __init__( self, x, y ):
self.x= x
self.y= y
但是当我尝试导入这个库时出现这个错误
NameError: 名称 'coord' 未定义
所以问题是:如何让 python 接受顶点作为一种数据类型?
您可以将 class 的名称用引号括起来
def __init__(self, a: 'coord', b: 'coord', c: 'coord') -> None:
...
或者您可以use a __future__
import自动执行此操作
from __future__ import annotations
...
def __init__(self, a: coord, b: coord, c: coord) -> None:
...
from __future__ import annotations
有效地将所有类型签名用引号括起来,以防止出现这个确切的问题。只要你不在运行时反射性地查看类型注释(使用 MyClass.__annotations__
之类的东西),你甚至不会注意到,你的类型检查器会工作得更好。
请注意,类型提示可以是 class 或类型(在您的情况下顶点是 class):
from whatever import vertex
class triangle():
def __init__(self, v1:vertex, v2:vertex, v3:vertex)->None:
...
使用前需要声明class!所以将 coord
class 放在 triangulo
的顶部将解决问题
我有一个名为 triangulo 的 class 和一个名为 coord 的 class。所以,为了创建一个新的三角形实例,我传递了三个顶点,比如
t= triangle( V1, V2, V3)
所以,为了文档,我想这样写 class 三角形
class triangulo( object ):
def __init__(self, a:coord, b:coord, c:coord)->None:
"""Constructor
"""
self.A= a
self.B= b
self.C= c
class coord( object ):
def __init__( self, x, y ):
self.x= x
self.y= y
但是当我尝试导入这个库时出现这个错误
NameError: 名称 'coord' 未定义
所以问题是:如何让 python 接受顶点作为一种数据类型?
您可以将 class 的名称用引号括起来
def __init__(self, a: 'coord', b: 'coord', c: 'coord') -> None:
...
或者您可以use a __future__
import自动执行此操作
from __future__ import annotations
...
def __init__(self, a: coord, b: coord, c: coord) -> None:
...
from __future__ import annotations
有效地将所有类型签名用引号括起来,以防止出现这个确切的问题。只要你不在运行时反射性地查看类型注释(使用 MyClass.__annotations__
之类的东西),你甚至不会注意到,你的类型检查器会工作得更好。
请注意,类型提示可以是 class 或类型(在您的情况下顶点是 class):
from whatever import vertex
class triangle():
def __init__(self, v1:vertex, v2:vertex, v3:vertex)->None:
...
使用前需要声明class!所以将 coord
class 放在 triangulo
的顶部将解决问题