欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python类的BIF(issubclass, isinstance, hasattr ,getattr, setattr, delattr)

程序员文章站 2022-07-15 16:50:02
...

issubclass(class, classinfo)
如果参数class,是classinfo的子类,就会返回True
1.一个类会被认为是自身的子类
2.classinfo 可以使类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True
**小贴士:object是所有类的基类

isinstance(object, classinfo)
检查一个对象是否属于一个类,object为实例对象的一个参数,classinfo是类或者元组
1.如果第一个参数不是对象,则永远返回False
2.如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常

hasattr(object, name)
attr = attribute 属性
测试一个对象,里面是否有指定的属性,其中name要用双引号“ ”括住。
例子:

>>> class C:
	def __init__(self, x=0):
		self.x = x
>>> c1 = C()
>>> hasattr(c1, x)
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    hasattr(c1, x)
NameError: name 'x' is not defined         #如果name没有加双引号,就会触发NameError
>>> hasattr(c1, 'x')
True

getattr(object, name[, default])
返回对象指定的属性值,如果指定的属性不存在,就会将default参数打印出来,如果没有default参数,就会抛出AtrributeError的异常。

>>> class C:
	def __init__(self, x=0):
		self.x = x
>>> getattr(c1,'x')
0
>>> getattr(c1, 'y')                #没有default的参数,抛出AtrributeError的异常
Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    getattr(c1, 'y')
AttributeError: 'C' object has no attribute 'y'
>>> getattr(c1, 'y', '您访问的对象属性不存在')     #有default参数,返回default
'您访问的对象属性不存在'
>>> 

setattr(obiect, name, value)
可以设置对象中,指定属性的值,如果对应属性不在,就会新建一个属性,并将值赋予该属性。(name一样要加双引号)

>>> class C:
	def __init__(self, x=0):
		self.x = x
>>> setattr(c1, 'y', 'luckywow')
>>> getattr(c1, 'y','您访问的对象属性不存在')
'luckywow'

delattr(object, name)
删除指定对象的属性,如果指定对象没有相应属性,则返回AtrributeError的异常

class C:
def init(self, x=0):
self.x = x

setattr(c1, ‘y’, ‘luckywow’)
delattr(c1, ‘y’) #删除对象c1中的属性 y
delattr(c1, ‘y’) #由于c1已经没有属性y了,所以返回异常
Traceback (most recent call last):
File “<pyshell#47>”, line 1, in
delattr(c1, ‘y’)
AttributeError: y