关于类和对象的一些BIF

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)


完了~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值