Document that `inspect.isclass` returns False for `GenericAlias` instances
未關閉
@AbduazizZiyodov 已經在處理了。
開始於 2025年4月13日。
docs
easy
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 35.9k
- PR 合併指標
- PR 指標待擷取
描述
Bug report
Bug description:
Hi
I am not sure if this is a bug, but I use the bug template because I couldn't find a better one to submit questions like this one.
The documentation says, "User-defined generic classes can be instantiated.".
import inspect
from typing import TypeVar, Generic
T = TypeVar("T")
class Node(Generic[T]):
x: T # Instance attribute (see below)
def __init__(self, label: T | None = None) -> None:
self.label = label
x = Node("") # Inferred type is Node[str]
y = Node(0) # Inferred type is Node[int]
z = Node() # Inferred type is Node[Any]
# Also OK:
y = Node[int](0)
print(inspect.isclass(Node)) # True
print(inspect.isclass(Node[int])) # False (shouldn't this be True?)
print(inspect.isclass(Node[str])) # False (shouldn't this be True?)
In the example above, shouldn't calls such as inspect.isclass(Node[int]) return True, since they can be instantiated and used like normal classes?
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs
- gh-133504
- gh-150854
- gh-151116
- gh-151117
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
評估
這個 Issue 還沒有評估資料。