isinstance() 与 type() 区别
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- isinstance() 会认为子类是一种父类类型,考虑继承关系。
- 如果要判断两个类型是否相同推荐使用 isinstance()。
class A:
pass
class B(A):
pass
isinstance(A(), A)
type(A()) == A
isinstance(B(), A)
type(B()) == A
type函数
语法
- type(object)
- type(name, bases, dict)
- name -- 类的名称。
- bases -- 基类的元组。
- dict -- 字典,类内定义的命名空间变量。
- 返回新的类型对象(和通过class定义的类并无差别,事实上,在使用 class 定义类时,Python 解释器底层依然是用 type() 来创建这个类。)
def say(self):
print("我要学 Python!")
CLanguage = type("CLanguage",(object,),dict(say = say, name = "C语言中文网"))
clangs = CLanguage()
clangs.say()
print(clangs.name)
>>> 我要学 Python!
>>> C语言中文网