面对对象编程 >(4)

    xiaoxiao2023-12-02  162

    区分issubclass()与 isinstance()

    issubclass()用于判断类对象与类对象之间的关系。

    #issubclass()前面是不是后面的子类,返回布尔类型 #第一个实参是类对象,第二个实参是类对象或由类对象组成的元组。 如果第一个实参是第二个实参中任意一个类对象的子类,返回True class A(object): pass class B(object): pass class C(object): pass class D(A): pass print(issubclass(D, A)) print(issubclass(D, B)) print(issubclass(D, (B, A, C))) print(issubclass(D, (B, C))) , print(issubclass(bool, int)) #True/False 实质上是0/1,因此属于int print(issubclass(bool, str)) #输出 True False True False True False

    isinstance()判断是不是实例。

    print(isinstance(D(), D)) print(isinstance(D(), A)) #A是D的子类,D()是D的实例,故D()是A的实例 #输出 True True

    type()和dir()

    type()查看对象的类型dir()查看所有的方法和属性

    type():

    class MyClass(object): pass mc = MyClass() print(type(mc)) #输出 <class '__main__.MyClass'>

    由上可得:实例对象的类型就是它对应的类对象

    print(type(MyClass)) #输出 <class 'type'>

    由上可得:type是Python的一个总类,所有的类都属于在type中。 因此一个类对象的type是type

    print(type(int)) print(type(str)) #输出 <class 'type'> <class 'type'> def do_sth(): pass print(type(do_sth)) #输出 <class 'function'>

    由上可得:自定义函数的类型是function

    print(type(dir)) #输出 <class 'builtin_function_or_method'>

    由上可得:内置函数的类型是builtin_function_or_method

    最新回复(0)