• 第19-21天


    组合:

      类似于类中类的概念,或者说是如同一个树状图,如

      class A:

        def __init__(self, a, b):

          self.a = a

          self.b = b

      class B

        def __init__(self,c)

          self.c = c

      b = B(ccc')

      abc = A('aaa',b)

      print(abc.__dict__) 

    结果应该是  {'b': <__main__.B object at 0x0000028D7D33EF28>, 'a': 'aaa'}   ,这里的b对应的值也是一个class

    继承 :

      class A : 

        def __init__(self, a, b):

          self.a = a

          self.b = b

      class B(A):

        def __init__(self, a, b, c):

          super().__init__(a, b)

      则:

      asd = B(a , b, c)  需要三个参数。继承则共用A中的方法与属性

    钻石继承:

      新式类,按照广度优先,调用路线好比走路,当还有其他点能到下个点的时候,优先走另一条路  (PY2中表达方法是类继承object,3中全是新式类)

      经典类:按着深度优先,可以理解为一条路一直走到头

    接口类:一种规范化

      from abc import ABCMeta,abstractmethod

      class Py(metaclass= ABCMeta):

        @abstractmethod

        def ppp(self,a):pass

      若此时Be类继承Py类,则必须有ppp这个方法,即:

      class Be(Py):

        def ppp(self,a): pass

      都叫一个名字了以后,就可以归一化管理:

      def aaa(a, b):

        a.ppp(b)      做到统一调用

    如同:

      

    from abc import ABCMeta,abstractmethod
    class A(metaclass= ABCMeta):
    @abstractmethod
    def ppp(self,b):
    print(b+1)


    class B(A):
    def __init__(self,r):
    self.a = r
    def ppp(self,a):
    print(a)

    class C(A):
    def __init__(self, r):
    self.a = r
    def ppp(self,b):
    print(b+1)

    def aaa(a, b):
    a.ppp(b)

    c = C(0)
    b = B(2)
    a = aaa(c, 10)



    鸭子模型:

        是一种格式,即不用上述方法强制限制,而是程序员自己按照格式走

    多态:   

        java中存在多态。当函数需要传参的时候,需要固定参数的类型,如public class A entend B (int a, int b)称之为多态

        Python中不存在多态(说法不一),跟确切的说是使用的方法跳过了这个判定的阶段

     

      

  • 相关阅读:
    PCA算法的最小平方误差解释
    windows下面安装Python和pip终极教程
    理解C/C++的复杂声明
    C++的特殊预处理定义#、##和#@
    虚拟机中linux系统无法打开原保存的显示器配置解决方法
    Visual C++内存泄露检测—VLD工具使用说明
    C++重载、覆盖与隐藏——转载
    python爬虫实战(二)--------千图网高清图
    Linux常用命令12
    Linux常用命令11
  • 原文地址:https://www.cnblogs.com/ylx900/p/8857447.html
Copyright © 2020-2023  润新知