Mark classes as not instantiable

Offen
#2,066 1 Kommentar 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Beginne mit dem Laufzeitbeispiel im Issue und der verknüpften typeshed-Referenz python/typeshed#14558. Vergleiche die vorgeschlagenen new-Annotationen, das Setzen von new auf None und einen Decorator mit dem bestehenden Verhalten von typing. Die Aufgabe ist abgeschlossen, wenn sich das Projekt auf eine Möglichkeit geeinigt hat, auszudrücken, dass eine Klasse nicht instanziiert werden kann, und die erwartete Semantik dafür definiert hat.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

topic: feature

From python/typeshed#14558: Some classes (like re.Pattern) are not instantiable at runtime:

>>> import re
>>> re.Pattern()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot create 're.Pattern' instances

Currently, there is no working way to mark classes as such. Ideas to mark classes:

  • Annotate the return type of __new__ as NoReturn/Never.
  • Set __new__ to None (similar to how __hash__ works).
  • A new decorator.
Vorherrschende Sprache
Python
Sterne
1.8k
Forks
302
Ø Merge
23 Std.
Gemergte PRs (30 T.)
8

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python/typing

Alle Issues in python/typing

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.