多态和封装
发布日期:2021-08-13 19:50:37 浏览次数:1 分类:技术文章

继承顺续

1.python中的类可以继承多个类,java和c#中则只能继承一个类
2.python的类如果继承了多个类,那么其寻找的方式有两种,分别是深度优先和广度优先
3.在python3中所有的类都是新式类,都哦按照广度优先来寻找。
mro表
python3对于你定义的每一个类,python会计算出一个方法解析顺序(MRO)列表,这个MRO列表就是一个简单的所有基类的线性顺序列表

# python2,深度优先 寻找顺序 F-->D-->B-->C-->E# python3:广度优先 寻找顺序 F-->D-->E-->B-->Cclass B:    def test(self):        print("from B")        passclass C:    def test(self):        print("from C")        passclass D(B,C):    def test(self):        print("from D")        passclass E(B,C):    def test(self):        print("from E")        passclass F(D, E):    def test(self):        print("from F")        passf = F()f.test()# print(F.mro()) # python3查看mro顺序表

多态和多态性

# 2.作业二:基于多态的概念来实现linux中一切皆问题的概念:文本文件,进程,磁盘都是文件,然后验证多态性import abcclass All_file(metaclass=abc.ABCMeta):    @abc.abstractmethod    def read(self):        print("All file")        pass    @abc.abstractmethod    def write(self):        print("All file")        passclass Txt(All_file):    def read(self):        super().read()        print("Txt read")    def write(self):        super().write()        print("Txt write")class Sata(All_file):    def read(self):        super().read()        print("Sata read")    def write(self):        super().write()        print("Sata write")def read(obj):    obj.read()def write(obj):    obj.write()t = Txt()s = Sata()t.read()s.write()read(s)

封装

在python中用双下划线的方式实现隐藏属性(设置成私有的)

class A:    __N=0 #类的数据属性就应该是共享的,但是语法上是可以把类的数据属性设置成私有的如__N,会变形为_A__N    def __init__(self):        self.__X=10 #变形为self._A__X    def __foo(self): #变形为_A__foo        print('from A')    def bar(self):        self.__foo() #只有在类内部才可以通过__foo的形式访问到.

转载于:https://www.cnblogs.com/zouruncheng/p/6740367.html

上一篇:day 02 编码初识
下一篇:django自带过滤器大全