1、判断一个类为另一个类的子类
issubclass(class,classinfo)判断第一个参数是否为第二参数的子类
注意:1、这是不严格判断,因为一个类被认为是自身的子类
2、classinfo 可以是类对象组成的元组,只要class是其中任何一个候选的子类则返回Ture
3、在其他情况下抛出TypeError的错误
classA:def __init__(self):print('我是A类')classB(A):def __init__(self):print('我是B类继承A')classC(B):def __init__(self):print('我是C类继承B')>>>issubclass(C,A)
True>>>issubclass(C,B)
True>>>issubclass(A,A)
True>>> issubclass(A,object)#所有类的父类都是object
True>>>issubclass(A,C)
False>>>issubclass(C,(A,B))
True>>>
2、判断一个对象是否属于该类
isinstance(object,classinfo)
注意:1、如果第一个参数不是对象则永远返回False
2、如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError的异常
classA:def __init__(self):print('我是A类')classB(A):def __init__(self):print('我是B类继承A')classC:def __init__(self):print('我是C类')
>>> a=A()
我是A类>>>isinstance(a,A)
True>>>isinstance(a,(C,A))
True>>>isinstance(B,(C,A))
False>>>isinstance(B,a)
Traceback (most recent call last):
File"", line 1, in isinstance(B,a)
TypeError: isinstance() arg2 must be a type or tuple of types
3、判断对象是否存在某种属性
hasattr(object,name)
注意:name要用单引号‘’括起来
classA:
size=10
def __init__(self):print('我是A类')>>> hasattr(A,'size')
True
4、获取对象的属性
getattr(object,name,default)
注意:当对象无该属性时如果default没赋值则会报错,如果赋值则返回default的值
classA:
size=10
def __init__(self):print('我是A类')>>> getattr(A,'lenth','不存在该属性')'不存在该属性'
5、新建对象属性和删除属性的方法
新建
1、直接对象.属性 新建属性
2.setattr(object,name,value)#name加单引号
删除
delattr(类对象,name)
对类对象的属性的删除会影响到由该类所产生的实例对象,而不能用delattr(实例对象,name)来删除属性
classA:
size=10
def __init__(self):print('我是A类')>>> a=A()
我是A类>>>a.size10
>>> a.y=1
>>>a.y1
>>>a.size10
>>>A.y
Traceback (most recent call last):
File"", line 1, in A.y
AttributeError: type object'A' has no attribute 'y'
>>> A.U=0>>>a.U
0>>> delattr(A,'U')>>>a.U
Traceback (most recent call last):
File"", line 1, in a.U
AttributeError:'A' object has no attribute 'U'
6、property
引用小甲鱼:http://bbs.fishc.com/thread-51106-1-1.html
classC:def __init__(self, size=10):
self.size=sizedefgetXSize(self):returnself.sizedefsetXSize(self, value):
self.size=valuedefdelXSize(self):delself.size
x.property(getXSize,setXSize,delXSize)>>>c.x10
>>> c.x = 12
>>>c.x12
#使用函数修饰符
classC:def __init__(self, size=10):
self.size=size
@propertydefx(self):returnself.size
@x.setterdefx(self, value):
self.size=value
@x.deleterdefx(self):del self.size
7、函数修饰符
http://bbs.fishc.com/thread-51109-1-1.html