我派生自str
得到强类型的字符串引用。它们如下所示,它们是多余的,我想避免冗余:
class VarRef(str):
def __new__(cls, *args, **kw):
return str.__new__(cls, *args, **kw)
class SceneRef(str):
def __new__(cls, *args, **kw):
return str.__new__(cls, *args, **kw)
class AmbienceRef(str):
def __new__(cls, *args, **kw):
return str.__new__(cls, *args, **kw)
例如,这确保了我需要显式转换才能获得a,VarRef
但否则它的功能类似于字符串。
我还有很多,希望有一种方法可以__new__
为每个复制相同的构造函数。
我仅将这些用于MyPy类型检查,因此在运行时,如果它们是普通字符串,就可以了。如果有一种仅将它们标记为类型检查的机制,我很乐意使用该方法。
使用NewType
声明一个类型,其在功能从基类型相同的,但不同的标称。
from typing import NewType
URL = NewType("URL", str)
fail: URL = "Hello World" # Incompatible types in assignment (expression has type "str", variable has type "URL")
docs: URL = URL("https://docs.python.org/3/library/typing.html")
请记住,对值的操作仍按常规定义,包括它们的类型。例如,docs + '#newtype'
仍会产生str
而不是URL
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句