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)
完了~~~
来源:CSDN
作者:wanyun_qian
链接:https://blog.csdn.net/wanyun_qian/article/details/103463446