BIF:内置函数
object是所有类的基类,所有类都默认继承object
1.如何判断一个类是否为另一个类的子类? issubclass(类名A,类名B) 如果A是B的子类,则返回True否则返回False
但这个检查是费严格性的检查
a对于这个函数一类会被认为是它本身的子类
b该函数的第二个参数可以是 很多类名组成的一个元组 例如 issubclass(类名A,(类名B,类名C,类名D))。如果类名A是他们其中一个类的子类那么会返回True,否则返回False
>>> class A:
pass
>>> class B(A):
pass
>>> issubclass(B,A)
True
>>> issubclass(A,A)
True
>>> issubclass(B,object)
True
>>> class C:
pass
>>> issubclass(B,C)
False
>>> issubclass(B,(A,C))
True
2.如何判断一个实例对象是否属于一个类? isinstance(对象名,类名) 或者 isinstance(对象名,(类名,类名,类名...)) 如果对象是其中一个类的实例化对象就会返回True
instance | 英[ˈɪnstəns] |
n. |
>>> class A:
pass
>>> a=A()
>>> isinstance(a,A)
True
>>> class B:
pass
>>> isinstance(a,(A,B))
True
特殊情况:子类的对象不仅属于子类也属于父类
>>> class B(A):
pass
>>> h=B()
>>> isinstance(h,B)
True
>>> isinstance(h,A)
True
3如何判断一个对象是否有一个属性? hasattr(对象名,"属性名")
attribute | 英[əˈtrɪbju:t]属性 |
>>> class C:
x=0
y=0
def __init__(self,x,y):
self.x=x
self.y=y
>>> c=C(1,2)
>>> hasattr(c,'x')
True
>>> hasattr(c,'y')
True
4.如何的到对象的属性值?getattr(对象名,'属性名') 或者 getattr(对象名,'属性名',"在找不到属性时返回的字符串内容")>>> class A:
x=0
y=0
def __init__(self,x,y):
self.x=x
self.y=y
>>> a=A(2,2)
>>> getattr(a,'x')
2
>>> getattr(a,'y')
2
>>> getattr(a,'z')
Traceback (most recent call last):
File "<pyshell#75>", line 1, in <module>
getattr(a,'z')
AttributeError: 'A' object has no attribute 'z'
>>> getattr(a,'z',"没有这个属性")
'没有这个属性'
5.如何改变对象中指定属性的值?setsttr(对象名,'属性名',值),该对象没有这个属性时,该对象会创建该属性,并给它赋值
>>> class A:
x=0
def __init__(self,x):
self.x=x
>>> a=A(1)
>>> setattr(a,'x',2)
>>> setattr(a,'y',1)
>>> hasattr(a,'y')
True
6.如何删除对象中指定的属性?delattr(对象名,'属性名')
感觉不太好用,删完还是能检查出存在
>>> class A:
x=1
y=2
z=3
def __init__(self,x,y,z):
self.x=x
self.y=y
self.z=z
>>> a=A(1,2,3)
>>> delattr(a,'x')
>>> hasattr(a,'x')
True
7如何通过属性设置属性?变量(不可取为与该属性同名)=property(获取属性的方法,设置属性的方法,删除属性的方法)
我什么用property()?
在一个属性有获值,设置值,删除这属性(属性值清空)这三个函数时,我们将个三个函数集成另一个属性
可以通过对象名.属性名 来获取,设置,删除原属性...这样做不用写繁杂的函数名,并且当函数更名时,属性名字不变...方便
property | 英[ˈprɒpəti] |
n. |
>>> class A:
a=0
def __init__(self,a):
self.a=a
def getA(self):
return self.a
def setA(self,b):
self.a=b
def delA(self):
del self.a
a1=property(getA,setA,delA)
>>> hh=A(1)
>>> hh.a1
1
>>> hh.a1=2
>>> hh.a1
2
>>> del hh.a1
>>> hh.a1
0