【发布时间】:2023-03-04 20:03:01
【问题描述】:
有时在编码时,我需要“特殊类型的字符串”和“特殊类型的整数”作为文档。
例如你可能有。
def make_url(name:str) -> URL:
URL 实际上是一个字符串。在某些语言(例如 C)中,您可以为此使用 typedef,而在 python 中,您可以执行类似的操作。
URL = str
有没有正确的方法来做到这一点?你可以以非常程序化的方式做事,并且:
class URL(str):
pass
甚至
class URL:
def __init__(self, url):
self.url
但是这两种感觉都太过分了,以至于对于很多用例来说,它们并不值得付出这些开销。
【问题讨论】:
-
您的意思是alias?您可以只写
URL = str,并使用URL作为类型。还是您的意思是协议之类的东西? -
"在 python 中你可以做类似
URL = str"的事情——这行得通吗?如果你已经知道用 Python 做什么,你的问题是什么? -
@khelwood 我想如果有一种公认的方法我很感兴趣。我的理解是使用
URL = str并不完全是另一种类型。如果类型系统允许您从字符串中为 URL 分配 url,但要求您对采用 URL 的函数的参数进行注释,这可能会很方便。