3 ms·
Yes, simply FirstNameType = str (But don't use ints for postal codes, even if the postal codes are numeric)
by paisawalla 5y ago
Yes, simply
FirstNameType = str
(But don't use ints for postal codes, even if the postal codes are numeric)
- lolive 5y agoHuuum. If I sign a function so it only accepts a FirstNameType, and I use the statement you propose, won’t any string be acceptable as an input parameter, from the type system point of view?
- jamincan 5y agoYeah, that is the syntax for a type alias. You can use NewType to create an actual subclass of the type instead. https://docs.python.org/3/library/typing.html#newtype https://docs.python.org/3/library/typing.html#newtype
- paisawalla 5y agoIn that case, you need a subclass of string that does nothing but has its type as FirstNameType. Wherever you create or return strings that are first names, you'll need to instantiate FirstNameType instead.
- colejohnson66 5y ago> ... even if the postal codes are numeric Maybe in the US. In Canada, they are 6 characters of letter-digit-letter-digit-letter-digit (in regex: /((?:[A-Z][0-9]){3})/)
- kennu 5y agoAnd in the future, they could be anything. Finland expanded the allowed characters in person identification numbers to support people born after 2000. Usually bad idea to be too strict in checking fields where people manually enter text.