Python 3.12 Generische Syntax und undefinierte VariablenPython

Python-Programme
Anonymous
 Python 3.12 Generische Syntax und undefinierte Variablen

Post by Anonymous »

Ich bin gerade mit Python 3.12 über dieses seltsame Ding gestolpert. Python lässt mich diesen Namen als "gebunden" in 3.12 generischer Syntax verwenden.

Code: Select all

from typing import TYPE_CHECKING, TypeVar

if TYPE_CHECKING:
from pydantic import BaseModel

def works_as_expected[T: "BaseModel"](a: type[T]) -> T:
return a()

# ???
def why_does_this_work[T: BaseModel](a: type[T]) -> T:
return a()

# Breaks as expected:
# NameError: name 'BaseModel' is not defined
_T = TypeVar("_T", bound=BaseModel)

def whatever(a: type[_T]) -> _T:
return a()

Kann mir dies jemand erklären? PEP-649 und PEP-749-aufgeschobene Bewertung von Anmerkungen, aber diese PEPs werden in 3.14 implementiert, und ich fand dieses Verhalten in 3.12.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post