关于类和对象的一些BIF

拈花ヽ惹草 提交于 2019-12-10 01:50:35

1.issubclass(class, classinfo),这个函数是用来判断第一个参数(class)是否是第二个参数(classinfo)的子类,如果是的话就返回True。其中class info参数可以是一个元组,只要class是其中任何一个候选类的子类,就会返回True,例如:

class A:
	pass

class B(A):
	pass

print(issubclass(B, A))
print(issubclass(B, B))
print(issubclass(B, object))

结果是:True,True,True
2.isinstance(object, classinfo),这个函数是用来判断第一个参数(object)是否是第二个参数(classinfo)的实例化对象,如果是的话就返回True,其中classinfo参数可以是一个元组,只要class是其中任何一个候选类的子类,就会返回True,例如:

class A:
	pass

class B(A):
	pass

class C:
	pass

b1 = B()
print(isinstance(b1, B))
print(isinstance(b1, C))
print(isinstance(b1, A))
print(isinstance(b1, (A, B, C)))

结果是:True,False,True,True
3.hasattr(object, name),顾名思义是用来判断一个对象(object)中是否有指定的属性(name),但是要注意的是定义了一个类,实例化之后,如果没有给属性赋值,这个属性是不属于这个实例化对象的,这一点要和C++中区别开来:

class CC:
	def setXY(self, x, y):
		self.x = x
		self.y = y

	def printXY(self):
		print(self.x, self.y)


cc = CC()
cc.setXY(4, 5)
print(hasattr(cc, 'x'))
print(cc.__dict__)

运行结果是True,{‘x’:4,‘y’:5}
4.getattr(object, name[,default])这个函数用来返回对象的属性值,存在的话就返回True,如果不存在的话就会返回可选参数中的内容:

class CC:
	def setXY(self, x, y):
		self.x = x
		self.y = y

	def printXY(self):
		print(self.x, self.y)


cc = CC()
cc.setXY(4, 5)
print(getattr(cc, 'x'))
print(getattr(cc, 'y'))
print(getattr(cc, 'z', '您所返问的属性不存在...'))

5.setattr(object, name, value)这个函数是用来设置对应属性值:

class CC:
	def setXY(self, x, y):
		self.x = x
		self.y = y

	def printXY(self):
		print(self.x, self.y)


cc = CC()
cc.setXY(4, 5)
print(cc.x)
setattr(cc, 'x', 8)
print(cc.x)

6.delattr(object, name)这个函数是用来删除对象的指定属性的:

class CC:
	def setXY(self, x, y):
		self.x = x
		self.y = y

	def printXY(self):
		print(self.x, self.y)


cc = CC()
cc.setXY(4, 5)
delattr(cc, 'y')
print(cc.__dict__)

运行结果是:{‘x’:4}
7.property(),通过属性来设置属性。

class C:
	def __init__(self, size = 10):
		self.size = size

	def getSize(self):
		return self.size

	def setSize(self, value):
		self.size = value

	def delSize(self):
		del self.size

	x = property(getSize, setSize, delSize)

c = C()
print(c.x)
c.x = 16
print(c.x)
print(c.size)
del x
print(c.size)


完了~~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!