What if duck types are unions of all the ducklings
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Merge medio
- 1 d 18 h
- PR fusionados (30 d)
- 54
Descripción
If the duck typed types were actually unions of all the ducklings then it would fix a bunch of edge cases that arise.
And would make this feature more easily understood and discovered.
def func1(c: complex):
reveal_type(c) # float | int | complex
def func2(f: float):
reveal_type(f) # float | int
def func3(b: bytes):
reveal_type(b) # bytes | bytearray | memoryview
def func4(u: unicode): # python 2 moment
reveal_type(u) # unicode | str
edge cases:
def func(f: float):
f.is_integer() # error: int has no member "is_integer"
def func(f: float):
if not isinstance(f, float):
print("hi") # no 'unreachable code' error
reveal_type(f) # int | complex
It would also be useful to have type types for float and bytes, when you want exactly float and don't want any stinking ints.
Related #11511, #11145
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con los ejemplos de este issue y compara la semántica de unión propuesta con los issues relacionados #11511 y #11145. Resuelve cómo deben comportarse los tipos con duck typing, incluidos los tipos exactos float y bytes y el estrechamiento mediante isinstance; se considera terminado cuando haya un diseño acordado y el comportamiento correspondiente del comprobador de tipos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100