python继承多态封装,python继承构造方法
仅用于研究参考。
单目标继承和多重继承
下面的继承如下。
面向对象的三个特征
根据封装职责将属性和方法封装成一个抽象类,继承并实现代码重用。相同的代码不需要重复编写,不同的对象调用相同的方法,产生不同的执行结果,增加了代码的灵活性。01.单一继承1.1继承的概念、语法和特征:子类拥有父类的所有方法和属性。
经典动物遗传
1)继承语法类名(父类名):
及格
班级孩子(父亲):
Pass子类继承父类,可以直接享受父类中封装的方法。不需要重新开发子类,应该按照职责封装子类的唯一属性和方法。2)专业术语狗类是动物类的子类,动物类是狗类的父类。狗类继承自动物类。Dog类是Animal类的派生类,Animal类是Dog类的基类。3)继承传递类C继承自B类,B类继承自a类,那么C类拥有B类和a类的所有属性和方法。
子类拥有父类以及封装在父类的父类中的所有属性和方法。
问个问题
咆哮的狗可以调用Cat类中定义的catch方法吗?
回答
不会,因为咆哮狗和猫没有继承关系。1.2重写的方法子类拥有父类的所有方法和属性。子类继承父类,可以直接享受父类中封装的方法,不需要再次开发。
应用场景当父类的方法实现不能满足子类的要求时,可以重写该方法。
重写父类方法有两种方式:重写父类的方法扩展父类的方法;1)覆盖父类的方法;如果父类的方法实现与开发中的子类完全不同,可以通过重写的方式在子类中重写父类的方法实现。
的具体实现相当于在子类中定义一个与父类同名的方法并实现它。
重写后,在运行时,只会调用子类中被重写的方法,不再调用父类封装的方法。2)扩展父类方法。如果在开发中,子类的方法实现包括父类的方法实现。最初由父类封装的方法实现是子类方法的一部分,所以你可以用扩展的方式重写子类中父类的方法。使用super()。父类方法在所需位置调用父类方法的执行代码。其他岗位是针对子类的需求,编写针对子类的代码实现。super是Python中的一个特殊类。super()是使用超类创建的对象。最常用的场景是调用封装在父类中的方法,实现在重写父类方法(know)时调用父类方法的另一种方式
在Python 2.x中,如果需要调用父类的方法,也可以使用以下方法:
父类名。Python 3.x目前支持method (self)这个方法不推荐,因为一旦父类改变,方法调用位置的类名也需要修改。
建议开发时,父类名和super()不要混用。如果用当前子类名调用方法,会形成递归调用,会出现无限循环。1.3父类的私有属性和私有方法子类对象不能在自己的方法中,直接访问父类的私有属性或私有方法子类对象可以通过父类的公共方法间接访问私有属性或私有方法。
私有属性和方法是对象的隐私,不向公众公开,外界或其子类不能直接访问。
私有属性和方法通常用来做一些内部的事情。
例子
例子
B对象不能直接访问__num2属性B对象不能在demo方法中访问__num2属性B对象。通过调用父类的test方法,可以访问演示方法中的__num2属性和__test方法。02.多重继承概念
一个子类可以有多个父类,它拥有所有父类的属性和方法。比如,一个孩子会遗传他父亲和母亲的特征。
语法
类名(父类名1,父类名2.)
Pass2.1使用多重继承的注意事项。
如果不同父类中有同名的方法,子类对象调用方法时会调用哪个父类?
提示:开发的时候,要尽量避免这种混乱的情况!3354如果父类之间有同名的属性或方法,应该尽量避免使用多重继承。
Python中的MRO ——方法搜索顺序Python为类提供了内置属性__MRO__。您可以查看方法搜索顺序。Mro是一种方法解析顺序,主要用于判断多继承中方法和属性的调用路径print(C.__mro__)输出结果。
(class _ _ main _ _。c ,class _ _ main _ _。a ,class _ _ main _ _。b ,class object )在搜索方法的时候,按照__mro__的输出结果从左到右进行搜索。如果在当前类中找到一个方法,它将被直接执行。)找下一个类有没有对应的方法。如果找到了,直接执行,不要再搜索了。如果找到了最后一个类,但没有找到方法,程序将报告错误2.2新类和旧(经典)类。
Object是Python为所有对象提供的基类。它提供了一些内置的属性和方法,可以使用dir函数来查看。
新型类:基于对象的类,推荐经典类:不推荐不基于对象的类。在Python 3.x中定义类时,如果没有指定父类,Python 3.x中定义的类将默认使用object作为基类。Python 3.x中定义的所有类都是新型类。在Python 2.x中定义一个类时,如果没有指定父类,object将不会用作基类。
当新类和经典类继承超过3354时,会影响方法的搜索顺序。
为了保证写出来的代码能同时在Python 2.x和Python 3.x中运行!
以后定义类时,如果没有父类,建议统一从object继承。
类名(对象):
及格
关注微信微信官方账号,回复【数据】,Python,PHP,JAVA,web,即可获取Python,PHP,JAVA,前端等视频数据。
来自海洋的渔夫原创作品,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。