继承
继承的概念和作用
描述类与类之间的所属关系
子类继承父类中所有的公有属性和方法
作用:提高代码的复用率,减少重复代码的手写
继承的语法
class A(B):
A继承了B,A称为子类,派生类;B称为父类,基类
继承分类
单继承
一个子类继承一个父类,这种继承关系称为单继承
class A(B)
多继承
一个子类继承多个父类,这种继承关系称为多继承
class A(B,C)
如果在父类中,有相同的属性或者方法,那么使用子类对象去调用这些属性和方法的时候,会默认调用第一个父类中的
多层继承
多层继承就是,A继承了B,B继承了C,C继承了D
这种继承关系叫做多层继承
类名.__mor__
使用这种方法可以查看类之间的从属关系,用以确认具体的执行方法
重写
为何重写
子类继承父类之后,发现父类中的方法不能满足子类的实际需求,那么就需要子类中重写父类中的方法
如何重写
在子类中去定义和父类中同名的属性和方法
重写之后,如果使用子类对象去调用同名的方法或者属性的时候,默认调用的是子类自己的属性和方法。
调用父类中的同名方法
父类名.方法名(self)
super(类名, self).方法名()
类名:指定类名之后,会按照继承顺序链当前类名的下一个类中寻找方法。
super().方法名()
私有权限
私有属性
在类的内部定义属性的时候,在属性名前面加上两个下划线的时候,该属性就变成了私有属性
只能在类的内部使用
如果需要在类的外部使用,在类的内部定义公有方法,通过对象去调用公有方法间接的使用私有属性
如果想修改私有属性的值,需要在类的内部定义一个公有方法,然后在类的外部调用改方法修改私有属性
私有方法
和私有属性相同
私有属性和私有方法在继承关系中,子类无法继承父类的私有属性和私有方法
拓展
对象名._dict__可以获取对象中所有的属性,然后可以在外部直接调用私有属性
即python中的私有权限是相对的,是一种假的私有
多态(了解即可)
传入不同的对象,实现不同的效果
实现
定义父类,提供公有方法
子类重写父类中的公有方法
定义一个函数,接收一个对象,在函数中通过传入的对象调用共同的方法
类属性和实例属性
类属性
定义
在类的内部,方法外定义的属性就是类属性
特点
所有通过这个类创建出来的对象,类属性都是一致的
访问(获取)
类名.类属性
对象.类属性名
注:如果类属性名和实例属性名同名,这个时候获取的是实例属性的值
修改
只能通过这种方法来修改
类名.类属性名 = 新值
类方法中使用cls.类属性名 = 值
实例属性
就是对象属性
类方法和静态方法
类方法
在类中定义一个方法,使用装饰器,@classmethod装饰的方法,并且此方法的第一个形参必须是cls,表示类对象
在方法中只需要使用到类对象的时候,就可以将此方法定义为类方法
静态方法
在类中定义方法的时候,方法使用装饰器@staticmethod装饰的方法就是静态方法
该方法没有cls也没有self,但是可以有其他形参
在方法中,没有使用类对象,也没有使用实例对象的时候,就可以将此方法定义为静态方法