获取对象信息

使用type()

基本类型的判断:

a=type(123)

print(a)

print(type(None))


指向函数或者类的变量:

print(type(abs))


比较两个变量的type类型是都相同:

print(type(123)==type(456))

print(type(123)==int)


使用isinstance()

对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用isinstance()函数。

print(isinstance(dog,Animal))

****

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

如:print(isinstance('a',str))

****

还可以判断一个变量是否是某些类型中的一种,比如:

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

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



使用dir()

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

print(dir('ABC'))


****

类似__XXX__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度。在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面代码等价

print(len('ABC'))

print('ABC'.__len__())


配合getattr(),setattr()以及hasattr(),可以直接操作一个对象的状态:

class Student():

def __init__(self):

self.x=9

    def power(self):

return self.x*self.x

a=Student()

print(hasattr(a,'x'))

print(hasattr(a,'y'))

setattr(a,'y',10)#设置一个属性‘Y’

print(a,'y')

print(getattr(a,'y'))#获取属性Y

print(a.y)


*****

如果视图获取不存在的属性,会抛出异常

print(getattr(a,'z'))


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

print(getattr(a,'z',404))


你可能感兴趣的:(获取对象信息)