zoukankan      html  css  js  c++  java
  • 第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中不存在多态(说法不一),跟确切的说是使用的方法跳过了这个判定的阶段

     

      

  • 相关阅读:
    Python3 -- 多线程(threading模块、queue模块)
    MySQL -- 常用汇总
    MySQL -- 常用函数汇总
    MySQL -- 数据表添加字段(三种方式)
    MySQL -- 查看表结构命令
    MySQL -- 修改/删除字段
    MySQL -- ALTER TABLE:修改数据表
    MySQL -- 单行注释和多行注释
    GCC 提供的原子操作
    内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理][转载]
  • 原文地址:https://www.cnblogs.com/ylx900/p/8857447.html
Copyright © 2011-2022 走看看