Python 类的一些BIF

issubclass

1 issubclass(cls, class_or_tuple, /)
2     Return whether 'cls' is a derived from another class or is the same class.
3     

 

 1 class A:
 2     pass
 3 
 4 class B(A):
 5     pass
 6 
 7 class C:
 8     pass
 9 
10 print(issubclass(A,(B,A)))  # 一个类会被认为自己的子类 .
11 
12 print(issubclass(A,B))      # 第一个是否是第二个类的子类
13 
14 print(issubclass(B,(A,C)))
15 
16 
17 help(issubclass)

 

 
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
2 True
3 True
4 True
5 False
6 >>> 

isinstance

 1 #isinstance   检查一个实例对象是否属于一个类 . (第二个也可以是一个元祖 可以有多个类.)
 2 class A:
 3     pass
 4 
 5 class B(A):
 6     pass
 7 
 8 class C:
 9     pass
10 
11 b1=B()
12 print(isinstance(b1,A))
13 
14 print(isinstance(b1,B))
15 
16 print(isinstance(b1,C))
17 
18 
19 print(isinstance(b1,(C,B)))
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
2 True
3 True
4 False
5 True
6 >>> 

hasattr  判断一个 对象里面有没有该属性

 1 #   hasattr(第一个是对象.第二个是属性名)    (attr=attribute 属性)
 2 class A:
 3     pass
 4 
 5 class B(A):
 6     pass
 7 
 8 class C:
 9     def __init__(self,x=0):
10         self.x=x
11 
12 #测试一个对象是否有指定的和属性.
13 c1=C()
14 print(hasattr(c1,'x'))# 属性必须用 '' 来 修饰
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
2 True
3 >>> 

 

getattr(实例对象,属性,不存在打印的值)(attribute 属性)  得到一个实例对象的属性的值 , 如果该属性不存在则打印第三个参数

 1 #   getattr(object,name[,default)   返回对象指定的属性值 如果指定的参数不存在 如果你制订了default则会defaulf打印出来,否则会有一个arrtibute的异常 ,
 2 class A:
 3     pass
 4 
 5 class B(A):
 6     pass
 7 
 8 class C:
 9     def __init__(self,x=0):
10         self.x=x
11 
12 c1=C()
13 
14 print(getattr(c1,'x'))
15 print(getattr(c1,'y','您所访问的属性不存在'))
1 0
2 您所访问的属性不存在
3 >>> 

setattr(实例对象,属性,值) 给实例对象一个属性值 如果该属性不存在则 建立属性然后赋值 . 

 2 class A:
 3     pass
 4 
 5 class B(A):
 6     pass
 7 
 8 class C:
 9     def __init__(self,x=0):
10         self.x=x
11 
12 c1=C()
13 print(getattr(c1,'y','您访问的属性不存在'))
14 
15 print(setattr(c1,'y',0))
16 
17 print(getattr(c1,'y','您访问的属性不存在'))
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
2 您访问的属性不存在
3 None
4 0
5 >>> 

delattr(实例变量,属性) 属性不存在则抛出 AttributeError的异常

 2 class A:    
 3     pass
 4 
 5 class B(A):
 6     pass
 7 
 8 class C:
 9     def __init__(self,x=0):
10         self.x=x
11 
12 c1=C()
13 print(getattr(c1,'y','您访问的属性不存在'))
14 
15 print(setattr(c1,'y',0))
16 
17 print(getattr(c1,'y','您访问的属性不存在'))
18 
19 print(delattr(c1,'y'))
20 
21 print(getattr(c1,'y','您访问的属性不存在'))
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
2 您访问的属性不存在
3 None
4 0
5 None
6 您访问的属性不存在
7 >>> 

 

property(fget=None,fset=None,fdel=None,doc=None)

    (得到 , 重置 , 删除 . )

 1 class C:
 2     def __init__(self,size=10):
 3         self.size=size
 4 
 5     def getSize(self):
 6         return self.size
 7 
 8     def setSize(self,value):
 9         self.size=value
10 
11     def delSize(self):
12         del self.size
13 
14     x=property(getSize,setSize,delSize,'这个难道是注释')
15 
16 c1=C()      # 生成一个 对象实例
17 
18 print(c1.getSize())     # 调用getSize()函数 . 
19 
20 print(c1.x)         
21 
22 c1.x=18
23 
24 print(c1.size)  # 调用 size 属性 . 
25 
26 print(c1.getSize())
27 
28 del c1.x
29 
30 print(c1.size)
 1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
 2 10
 3 10
 4 18
 5 18
 6 Traceback (most recent call last):
 7   File "C:/Users/Administrator/Desktop/new.py", line 30, in <module>
 8     print(c1.size)
 9 AttributeError: 'C' object has no attribute 'size'
10 >>> 

 

posted @ 2016-07-15 18:19  X-POWER  阅读(821)  评论(0编辑  收藏  举报