重用
重用是用于在对象的概念中,实现代码的重用性
在继承角度,在子类继承父类之后,重新使用父类属性方法即是代码的重用
在组合角度,在一个类中以另外一个类的对象作为数据属性,提高代码的重用性
重用的方式:
继承:
方式一:指名道姓的应用某一个类中的函数(无关继承,访问函数不存在自动传值)
例如:CollegePeople.__init__(self, name, age, sex)
方式二:使用内置方法super(),返回特殊对象访问属性(严格依赖mro列表,存在自动传值)
例如:super().__init__( name, age, sex)
组合:通过为某一个对象添加属性的方式,间接将两个类进行关联,减少类与类代码冗余
class Foo:
xxx = 222
class Bar:
yyy = 111
obj = Foo()
b = Bar() obj.attr = Bar()
obj.a = b obj.xxxx #调用Foo内属性
obj.attr.yyyy #调用Bar内属性
重写
重写用于继承概念下,子类继承父类需要同名的不同函数,即可修改重写同名方法。
例如:
class Parent: # 定义父类
def myMethod(self):
print '调用父类方法' class Child(Parent): # 定义子类
def myMethod(self):
print '调用子类方法' c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
重载
重载是,函数或者方法有相同的名称,但是参数列表不相同(类型不同,数量不同,位置不同)的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
python的实现过程中可能存在重载,但是在Python的呈现使用中不存在重载的概念。
原因:python 可以接受任何类型的参数,而对那些缺少的参数设定为缺省参数即可解决问题。即,python中参数传递时候的*arg和**kwargs