栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python中的获取对象信息

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中的获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型,有哪些方法呢?

使用type():

首先,我们来判断对象类型,使用type()函数:

基本类型都可以用type()判断:

>>>type(223)

>>>type('m')

>>>type(None)

判断基本数据类型可以直接写int,str等,但是如果要判断一个对象是否是函数怎么办?

可以使用types模块中定义的常量:

>>>import types

>>>def fn():

…pass

 

>>> type(fn)==types.FunctionType

True

>> type(abs)==types.BuiltinFunctionType

True

>> type(lambda x:x)==types.LambdaType

True

>> type((x for x in range(10)))==types.GeneratorType

True

使用isinstance():

对于class的继承关系来说,使用type()就很不方便,可以使用isinstance()函数。

如果继承关系是:

Object->Animal->Dog->Husky

那么,isinstance()就可以告诉我们,一个对象是否是某种类型。先创建3种类型的对象

>>>a = Animal()

>>>d = Dog()

>>>h = Husky()

>>>isinstance(h,Husky)

True

>>>isinstance(h,Dog)

True

>>>isinstance(h,Animal)

True

isinstance()判断的是一个对象是否是该类型的本身,或者位于该类型的父继承链上。

能用type()判断的基本数据类型可以用isinstance()判断:

>>>isinstance('a',str)

True

>>>isinstance(123,int)

True

还可以判断一个变量是否是某种类型的一种

>>>isinstance([1,2,3],(list,tuple))

True

>>>isinstance((1,2,3),(list,tuple))

True

使用dir():

如果想要获得一个对象的所有属性和方法 可以使用dir()函数,它返回一个包含字符串的list

>>>dir('ABC')

['__add__',…………]

仅仅是把属性和方法列出来是不够的,配合getattr(),setattr()及hasattr(),我们可以直接操作一个对象的状态。

>>>class MyObject (object):

def __init__(self):

  self.x = 9

def power(self):

   return self.x*self.x

>>>obj = MyObject()

现在,可以测试该对象的属性:

>>>hasattr(obj,'x')

True

>>>hasattr(obj,'y')

False

>>>setattr(obj,'y',20)

>>>hasattr(obj,'y')

True

>>>getattr(obj,'y')

20

如果获取不存在的属性,会抛出AttributeError错误

可以传入一个default参数,如果属性不存在,就返回默认值:

#获取属性'z',如果不存在,就返回默认值404

>>>getattr(obj,'z',404)

也可以获得对象的方法:

>>>hasattr(obj,'power')

True

 

 

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号