首页 > 编程语言 > 详细

Python -- 面向对象的三大特性及深入了解super()

时间:2019-07-12 09:25:39      阅读:119      评论:0      收藏:0      [点我收藏+]

面向对象的三大特性:继承(在上节),封装,多态

封装:将一些东西内容封装到一个地方,还可以取出来(例如:类设置静态属性,设置一些方法)

? 调用被封装的内容,有两种情况: 1. 通过对象直接调用 2. 通过self间接调用

多态:一个事物的多种形态,Python中默认支持多态.

鸭子类型(面试会问): A,B两个类,没有任何关系(完全没有耦合性),独立的两个,但里面的功能相似,所以Python一般会将类似于A,B两个类里面的相似的功能设定相同的名字,A,B虽然没有关系,但是在某种意义上统一了一个标准,用起来更方便.

super()深入了解

super() 严格意义并不是执行父类方法

  • 单继承: super() 执行父类的方法
  • 多继承: super(S,self) 严格按照self 从属于的类的mro的执行顺序,执行S的下一位.
# super() 多继承举例
class A:
    def f1(self):
        print('in A')

class Foo(A):
    def f1(self):
        super().f1()
        print('in Foo')

class Bar(A):
    def f1(self):
        print('in Bar')

class Info(Foo,Bar):
    def f1(self):
        super(Foo,self).f1()  #执行Foo 的下一位是 Bar
        print('in Info f1')

obj = Info()
obj.f1()        # Info 的 mro 顺序 Info,Foo,Bar,A
# in Bar
# in Info f1

Python -- 面向对象的三大特性及深入了解super()

原文:https://www.cnblogs.com/Agoni-7/p/11173879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!