美文网首页ITS·黑客
【Python】学习笔记16(获取对象信息)

【Python】学习笔记16(获取对象信息)

作者: 阿凯Awesome | 来源:发表于2017-05-12 15:28 被阅读6次

    如何判断给定对象的类型?使用type()函数

    基本类型

    判断基本数据类型可以直接写int,str。

    函数类型、类类型

    type()函数可以对括号内的对象判断,返回对应的Class类型。可以用于if语句的判断,能试的==两边值相同,则True,否则False。

    模块types,用于判断一个对象是否是函数,如==types.FunctionType,==types.BuiltinFunctionType,==types.LambdaType,==types.GeneratorType.


    判断Class的类型,包括继承的Class,可以使用isinstance()函数来判断。

    如果存在object -> Animal -> Dog -> Husky这样的继承关系,a=Animal(),d=Dog(),h=Husky(),isinstance(h,Husky)和isinstance(h,Dog)的返回结果均是True。isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上,但例子中的d不是Husky类的。

    能用type()判断的基本类型也可以用isinstance()判断。

    isinstance可以判断一个变量是否是某些类型中的一种,如:isinstance([1,2,3],   (list, tuple))


    使用dir()函数,来获得一个对象的所有属性和方法,它返回一个包含字符串的list。

    __XXX___的属性和方法在Python的特殊用途性,如果调用一个XXX()函数,实际上在XXX()函数内部,它自动去调用该对象的__XXX__()方法:

    这表明在len()函数所属的类中是有__len__()方法的,如果自写类,也想用len(myObj)的话,就要在类内部写一个__len__()方法:

    可见,以上例子是将同属于MyDog()这一类的所有类的__len__属性都设为了100。

    'lower()返回小写的字符串,也是一种自动调用属性或方法的。

    配合getattr()、setattr()、hasattr(),可以直接操作一个对象的状态,获得对象的属性、方法。

    'hasattr(Myobject(),'x'),用于判断Myobject()这个类内是否有属性'x'

    'Myobject().x,可直接调出这个类的x属性,可等同于getattr()

    'getattr(Myobject(),'x'),获取'x'这个属性的内容

    'setattr(Myobject(),'y',19),对于这个类中没有的属性'y',可以通过设置来使这个类有'y'这个属性

    对于不存在的属性,可以通过getattr()设定一个404参数,指default。

    获得对象的方法,结构同上。


    只有在不知道对象信息的时候,才会通过getattr()去获取对象信息。如果可以直接调用,就不使用getattr()函数。

    'read(),用于读取流(可以是文件流、网络流、字节流,只要返回的是有效数据即可)的方法,如果类中没有read(),则无法读取。

    相关文章

      网友评论

        本文标题:【Python】学习笔记16(获取对象信息)

        本文链接:https://www.haomeiwen.com/subject/eooztxtx.html