面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。在Python的类和实例中,有很多的内建函数可供选择,下面一起来看看Python中类和实例的内建函数大全吧。
issubclass(sub,sup): 判断一个类是另一个类的子类或者子孙类,如果是就返回True,第二个参数可以使可能父类组成的元组,只要第一个参数是其中给定元组中任何一个候选类的子类时,就返回True。
isinstance(obj1,class1):判断一个对象是否是另一个给定类的实例.是就返回True。第二个参数应当是类。
hasattr()\getattr()\setattr()\delattr() ------ 系列函数可以在各种对象下工作,不限于类和实例。操作obj.attr时就相当于调用*attr(obj,'attr')系列函数。 示例代码:
#!/usr/bin/env python # coding:utf-8 __author__ = "风轻情淡" class MyClass(object): def __init__(self): self.foo = 100 myInst = MyClass() hasattr(myInst, 'foo') # True getattr(myInst, 'foo') # 100 setattr(myInst,'bar',200) getattr(myInst, 'bar') # 200 delattr(myInst,'bar') hasattr(myInst, 'bar') # False
dir(): 作用在实例上时,显示实例变量,还有实例所在的类及所有它的基类中定义的方法和类属性;作用在类上时,则显示类以及它的所有基类的__dict__中的内容。作用在模块上时,则显示模块的__dict__的内容。不带参数时,则显示调用者的局部变量。
super(type[,obj]) 函数:帮助找出相应的父类,然后方便调用相关的属性;super(MyClass,self).__init__()。
var()函数:与dir()类似。
类,实例及其他对象的内建函数
issubclass(sub,sup) | 如果类sub是类sup的子类,则返回True,反之为False |
isinstance(obj1,obj2) | 如果实例obj1是类obj2或者obj2子类的一个实例;或者obj1是obj2的类型,则返回True;反之为Fasle |
hasattr(obj,attr) | 如果obj有属性attr(用字符串给出),返回True,反之,返回False |
getattr(obj,attr[,default]) | 获取obj的attr属性;与返回obj.attr类似;如果attr不是obj的属性,如果提供了默认值,则返回默认值;不然就会引发一个异常 |
setattr(obj,attr,val) | 设置obj的attr属性值为val,替换任何已纯在的属性值;不然就创建属性;类似obj.attr = val |
delattr(obj,attr) | 从obj中删除属性attr,类似于del obj.attr |
dir(obj= None) | 返回obj的属性的一个列表;如果没有给定obj,dir()则显示局部名字空间中的属性,也就是locals().keys() |
super(type,obj=None) | 返回一个表示父类类型的代理对象;如果没有传入obj,则返回的super对象是非绑定的,反之,如果是以个type,issubclass(obj,type)必为True;否者isinstance(obj,type)就必为True |
vars(obj=None) | 返回obj的属性及其值的一个字典;如果没有给出obj,vars()显示局部名字空间字典,也就是locals() |
以下是Python中类和实例的内建函数大全: