zoukankan      html  css  js  c++  java
  • Python 基础第六天(面向对象)

    类的三大特性:封装、继承、多态

    封装:

      广义的:给对象封装属性,给类中封装静态字段...

      狭义的:私有制、私有成员

        私有成员:静态私有字段,静态私有方法,静态私有对象属性。只有在自己类中访问,不能在类的外部或者派生类中访问。

    继承:基类(父类)、派生类(子类)

    多继承

    新式类(python3中,默认)

    经典类(python2中,可以是经典类,也可以是新式类(继承object))

    深度优先、广度优先;前提:只能继承两个类,超过不遵循(算法不一样)

    新式类:遵循广度优先  每个节点只走一次;一条路走到倒数第二级,判断,如果其他路可以走到终点,则返回走另一条路,如果不能,则走到终点
    经典类:遵循深度优先 一条路走到底

    通过  类.mro()  查看继承顺序

    多态:python中无多态,处处阶多态。有多继承,其他语言有多态,只有单继承

    抽象类(接口类):

    from abc import ABCMeta,abstractmethod
    
    class Payment(metaclass=ABCMeta):  # 抽象类(接口类)
        def __init__(self, money):
            self.money = money
        @abstractmethod   # 抽象类(需要继承abcmata) 强制一个规范,凡是继承该类必须有pay方法,如果没有,实例化对象时则报错
        def pay(self): pass  # 制定一个规范
    
    
    class Alipay(Payment):
    
        def pay(self):
            print(f"使用支付宝支付了{self.money}")
    
    
    class Jdpay(Payment):
    
        def pay(self):
            print(f"使用京东支付了{self.money}")
    
    
    class Wechat(Payment):
    
    #    def py(self):  
    #        print(f"使用微信支付了{self.money}")
    
        def pay(self):  
            print(f"使用微信支付了{self.money}")
    
    
    def pay(obj):  # 归一化设计
        obj.pay()
    
    
    a1 = Alipay(200)
    j1 = Jdpay(100)
    w1 = Wechat(300) # 当子类中没有pay()方法,对象实例化时报错
    # 归一化设计
    pay(a1)
    pay(j1)

    w1.pay()
  • 相关阅读:
    古谚、评论与论断、名篇与名言
    重读《西游记》
    重读《西游记》
    命名之法 —— 时间、季节、地点
    命名之法 —— 时间、季节、地点
    文言的理解 —— 古时的称谓、别称、别名
    文言的理解 —— 古时的称谓、别称、别名
    Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
    瀑布 敏捷 文档
    POJ 1325 ZOJ 1364 最小覆盖点集
  • 原文地址:https://www.cnblogs.com/pathping/p/5237353.html
Copyright © 2011-2022 走看看