面向对象程序设计具有三大基本特征:封装,继承和多态。
- 封装:封装是面向对象编程的核心思想,将对象的属性和方法封装起来,其载体就是类,类通常会对客户隐藏一些其实现细节,这就是封装的思想。
- 继承:继承是实现重复利用的重要手段,子类通过继承复用了父类的属性和方法的同时又添加了子类特有的属性和方法。
- 多态:子类继承父类特征的同时,也具备了自己的特征,并且能够实现不同的效果。
super()函数是用于调用父类的一个方法。
super是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没有问题,但是如果使用多继承(MRO)、重复调用(钻石继承)等问题
MRO就是类的方法解析顺序表,其实也就是继承父类方法的顺序表
super()方法的语法:
super(type[,object-or-type])
参数
- type–类
- object-or-type–类,一般是self
类和对象相关的BIF:
issubclass(class,classinfo)
#如果"class"是"classinfo"的一个子类,则返回True,否则返回False
isinstance(object,classinfo)
#如果"object"是"classinfo"的实例对象,则返回True,否则返回False
hasattr(object,name)
#如果"object"中有属性"name",则返回True,否则返回False
getattr(object,name[,default])
#如果"object"中没有"name"属性,则返回"default"中的值。如果没有设置"default"参数,则抛出ArttributeError异常
setattr(object,name,value)
#如果"object"中没有"name"属性,则新建一个名为"name"的属性,值为"value"
delattr(object,name)
#删除"object"中名为"name"的属性,如果属性不存在,则抛出AttributeError的异常
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,size):
self.size=size
def delSize(self):
del self.size
x=property(getSize,setSize,delSize)
这里将c.x 做重新赋值和删除操作的的话,c.size属性也会有做出相同的操作
这就是property的作用,property()会返回一个可以设置属性的属性,如何设置属性需要人为的来写代码。第一个参数是获取属性,第二个参数是设置属性,第三个是删除属性。