|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、
def func():
print("hello")
type(func)
<class 'function'>
既然func是一个function类的实例,那么issubclass(function, type)为什么会报错?
2、
type(int)
<class 'type'>
issubclass(int,type)
False
int为什么不是type的子类呢?
问题1解答
当执行 type(func) 得到的是 function 类型,但要注意:
- function 类型本身是 type 的实例(由type创建),而不是子类
- 所有类型的继承关系都要通过 __bases__ 属性查看,而 function.__bases__ 实际上会报错(因为function类型不能直接访问)
- 正确的判断应该是 issubclass(type(func), type),结果为True
问题2解答
int 类型和 type 的关系:
- type(int) 得到 type,说明int类型是由type元类创建的
- 但类的继承关系是看 __bases__ 属性:int.__bases__ 返回 (object,)
- 所有内置类型最终继承自object,而type是元类(创建类的类),属于不同维度的关系
可用代码验证:
- print(isinstance(int, type)) # True(说明int类型本身是type的实例)
- print(issubclass(int, object)) # True(继承关系)
- print(issubclass(type, object)) # True(type本身也继承自object)
复制代码
总结:元类关系(实例与type)和继承关系(子类与父类)是两个不同维度的概念。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|