turtle.Screen 是 python 中 turtle.TurtleScreen 的子类吗?

Is turtle.Screen a subclass of turtle.TurtleScreen in python?

from turtle import Turtle, Screen, TurtleScreen
turtle = Turtle()
screen = Screen()
print(isinstance(turtle, Turtle))
print(isinstance(screen, TurtleScreen))
print(issubclass(Screen,TurtleScreen))
print(isinstance(screen, Screen))

最后 2 次打印出现一些错误,调试显示“屏幕”不是 class。但是从文档中可以看出“Screen 是 TurtleScreen 的子 class”。那么这里出了什么问题?是不是和一个叫做 Singolton object 的东西有关?

没有 class 叫作 Screen。有一个名为 Screen 的(独立乌龟)函数 returns 单例 TurtleScreen 实例。所以这是正确的:

screen = Screen()
print(isinstance(screen, TurtleScreen))

(隐藏的现实是它是 class _Screen 的实例 class class TurtleScreen 的子实例class 共 TurtleScreenBase)

为简单起见,我们假装我们正在获取 class Screen 的实例,我们将在以下实例上调用方法:

from turtle import Screen

screen = Screen()
screen.setup(800, 600)

但这是一个方便的小说。