issubclass
issubclass(cls, class_or_tuple, /)
Return whether 'cls' is a derived from another class or is the same class.
class A:
pass
class B(A):
pass
class C:
pass
print(issubclass(A,(B,A))) # 一个类会被认为自己的子类 .
print(issubclass(A,B)) # 第一个是否是第二个类的子类
print(issubclass(B,(A,C)))
help(issubclass)
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
True
True
False
>>>
isinstance
#isinstance 检查一个实例对象是否属于一个类 . (第二个也可以是一个元祖 可以有多个类.)
class A:
pass
class B(A):
pass
class C:
pass
b1=B()
print(isinstance(b1,A))
print(isinstance(b1,B))
print(isinstance(b1,C))
print(isinstance(b1,(C,B)))
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
True
False
True
>>>
hasattr 判断一个 对象里面有没有该属性
# hasattr(第一个是对象.第二个是属性名) (attr=attribute 属性)
class A:
pass
class B(A):
pass
class C:
def __init__(self,x=0):
self.x=x
#测试一个对象是否有指定的和属性.
c1=C()
print(hasattr(c1,'x'))# 属性必须用 '' 来 修饰
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
>>>
getattr(实例对象,属性,不存在打印的值)(attribute 属性) 得到一个实例对象的属性的值 , 如果该属性不存在则打印第三个参数
# getattr(object,name[,default) 返回对象指定的属性值 如果指定的参数不存在 如果你制订了default则会defaulf打印出来,否则会有一个arrtibute的异常 ,
class A:
pass
class B(A):
pass
class C:
def __init__(self,x=0):
self.x=x
c1=C()
print(getattr(c1,'x'))
print(getattr(c1,'y','您所访问的属性不存在'))
setattr(实例对象,属性,值) 给实例对象一个属性值 如果该属性不存在则 建立属性然后赋值 .
class A:
pass
class B(A):
pass
class C:
def __init__(self,x=0):
self.x=x
c1=C()
print(getattr(c1,'y','您访问的属性不存在'))
print(setattr(c1,'y',0))
print(getattr(c1,'y','您访问的属性不存在'))
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
您访问的属性不存在
None
0
>>>
delattr(实例变量,属性) 属性不存在则抛出 AttributeError的异常
class A:
pass
class B(A):
pass
class C:
def __init__(self,x=0):
self.x=x
c1=C()
print(getattr(c1,'y','您访问的属性不存在'))
print(setattr(c1,'y',0))
print(getattr(c1,'y','您访问的属性不存在'))
print(delattr(c1,'y'))
print(getattr(c1,'y','您访问的属性不存在'))
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
您访问的属性不存在
None
0
None
您访问的属性不存在
>>>
property(fget=None,fset=None,fdel=None,doc=None)
(得到 , 重置 , 删除 . )
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,'这个难道是注释')
c1=C() # 生成一个 对象实例
print(c1.getSize()) # 调用getSize()函数 .
print(c1.x)
c1.x=18
print(c1.size) # 调用 size 属性 .
print(c1.getSize())
del c1.x
print(c1.size)
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
10
10
18
18
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/new.py", line 30, in <module>
print(c1.size)
AttributeError: 'C' object has no attribute 'size'
>>>