.封装

  • 定义:将一些东西内容封存到一个地方,你还可以再取出,

    • 类设置静态属性,设置一些方法
    • 对象可以在其对象空间中封装一些属性

2.多态

  • 定义:一个事物的多种形态

    • 就想a可以是一个字符串,可以是一个列表等等,不像Java中定义时必须声明变量类型
    • Python默认支持多态

3.鸭子类型

  • Python中你看起来像鸭子,那么你就是鸭子

  • 统一化规范

    • 例子:支付统一使用同一个接口

      # class QQpay:
      # def pay(self, money):
      # print(f'利用qq支付了{money}')
      # class Alipay:
      # def pay(self, money):
      # print(f'利用支付宝支付了{money}')
      # 支付功能 规划一下
      # def pay(obj,money): # 归一化设计
      # obj.pay(money)
      # obj1 = QQpay()
      # obj2 = Alipay()
      # pay(obj1,100)
      # pay(obj2,200)

4.约束

  • 让具有同一功能的类拥有同一个基类,在基类中对子类进行提示性约束和强制性约束

    • 提示性约束

      • class Payment:
        # def pay(self,money): # 约定俗称定义一种规范,子类要定义pay方法.
        # raise Exception('子类必须定义此方法') # class QQpay(Payment):
        #
        # def pay(self, money):
        # print(f'利用qq支付了{money}')
        #
        #
        # class Alipay(Payment):
        #
        # def pay(self, money):
        # print(f'利用支付宝支付了{money}')
        #
        # # class Wechatpay(Payment):
        # # def pay(self,money):
        # # print(f'利用微信支付了{money}')
        #
        # class Wechatpay(Payment):
        # def fuqian(self,money):
        # print(f'利用微信支付了{money}')
        # # 支付功能 规划一下
        # def pay(obj,money,choice): # 归一化设计
        # obj.pay(money)
        # choice = input('qq,weixin,zhifubao')
        # obj3 = Wechatpay()
        # pay(obj3,300)
        # obj3.fuqian(300)
        # # print(11)
        # raise TypeError('代码格式错误')
        # print(222)
        # 第一种约束: 在父类定义一个pay方法,主动抛出异常,如果子类没有定义pay方法,并且沿用了父类的pay方法
        # 即会报错. python推荐的一种约束方式.
    • 强制性约束

      • from abc import ABCMeta,abstractmethod
        # class Payment(metaclass=ABCMeta):
        # # 抽象类 接口类 规范和约束 metaclass指定的是一个元类
        # @abstractmethod
        # def pay(self, money):
        # pass # 抽象方法
        #
        #
        # class QQpay(Payment):
        #
        # def pay(self, money): # print(f'利用qq支付了{money}')
        #
        # class Alipay(Payment): # def pay(self, money):
        # print(f'利用支付宝支付了{money}')
        #
        # # class Wechatpay(Payment): # # def pay(self,money):
        # # print(f'利用微信支付了{money}') # class Wechatpay(Payment): # def fuqian(self,money):
        # print(f'利用微信支付了{money}')
        #
        # # def pay(self,money):
        # # pass # obj3 = Wechatpay()
        # 利用抽象类的概念: 基类如上设置,子类如果没有定义pay方法,在实例化对象时就会报错.

5.super的深入理解

  • # class A:
    # def f1(self):
    # print('in A')
    # class Foo(A):
    # def f1(self):
    # super(Foo,self).f1()
    # print('in Foo') # 2
    # class Bar(A):
    # def f1(self):
    # print('in Bar') # 1
    # class Info(Foo,Bar):
    # def f1(self):
    # super(Info,self).f1()
    # print('in Info f1') # 3
    # obj = Info()
    # print(Info.mro()) # [Info, Foo, Bar, A]
    # obj.f1()
    # super() 严格意义并不是执行父类的方法.
    # 单继承: super() 肯定是执行父类的方法.
    # 多继承: super(S,self) 严格按照self从属于的类的mro的执行顺序,执行 S类的下一位.
    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): # self = obj
    print('in Bar') class Info(Foo,Bar): def f1(self): # self = obj
    super(Foo,self).f1()
    print('in Info f1') obj = Info() # [Info, Foo, Bar, A]
    obj.f1()
    # 多继承: super(S,self) 严格按照self从属于的类的mro的执行顺序,执行 S类的下一位.

python面向对象类的约束和设计的统一化规范的更多相关文章

  1. python面向对象(类和对象及三大特性)

    类和对象是什么 创建类 新式类 和 经典类 面向对象三大特性 继承 封装 多态   面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  2. python 面向对象(类的特殊成员)

    python 面向对象: (思维导图 ↑↑↑↑) 类的特殊成员 python的类成员存在着一些具有特殊含义的成员 1.__init__: 类名() 自动执行 __init__ class Foo(ob ...

  3. python面向对象(类的成员及类方法)

    类的普通成员 字段 方法 属性 类的高级成员 静态字段 静态方法 属性方法   类方法 类成员修饰符 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中, ...

  4. Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

  5. python面向对象——类

    from:http://www.runoob.com/python3/python3-class.html Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在P ...

  6. python 面向对象(类)

    面向对象,即是将具备某种共性的事物抽象成一个类(模板),然后再根据类来创建实例对象进行具体的使用. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写, ...

  7. python 面向对象类与类之间的关系

    主要内容: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系 4. 类中的特殊成员 引子 大千世界, 万物之间皆有规则和规律,我们的类和对象是对大千世界中的所有事物进行归类. 那 ...

  8. python面向对象——类和对象

    一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程(流水线式) 优点:极大的降低了程序的复杂度 缺点:应用场景固定住了,可扩展性差 2.函数式编程 特点: a ...

  9. Python——面向对象(类)的基础疑难点

    相信用Python写def函数大家都信手拈来了,但Python作为面向对象的编程语言,怎么能浪费呢? 那问题来了.什么是类呢?什么是实例?什么是对象?方法是什么??属性又是什么???继承?封装?多态? ...

随机推荐

  1. kaggle——TMDB 电影票房收入预测

    介绍 看电影是目前人们休闲娱乐,消遣时光的选择之一.我们都知道,有些电影的票房很高,有的电影票房却很低,那么决定票房的因素是什么呢?本次将介绍,如何根据电影上映前的一些信息来预测出该电影的票房. 知识 ...

  2. 实验吧web--易--后台登陆

    题目地址:http://www.shiyanbar.com/ctf/2036 这道题确实有点考研脑洞了. 1.首先,查看网页源代码(Ctrl+U),会发现一段PHP代码: $sql = "S ...

  3. 201803-1 跳一跳 Java

    思路: 一个变量plus记录叠加的数,遇到2就+2 import java.util.Scanner; public class Main { public static void main(Stri ...

  4. python刷LeetCode:1.两数之和

    难度等级:简单 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不 ...

  5. 学生信息管理系统java测试报告

    package studentinformation; /**姓名 胡海靖 * 学号 20183609 * 班级 信1805-2 */ class ScoreInformation { private ...

  6. 关于 SQL Server 数据库批量备份与还原的一些 Tips

    一.前提 最近需要将服务器 A 上的数据库全部备份,并在服务器 B 上进行还原,30多个数据库一个一个地用鼠标点,先是 backup,之后时 restore……整个过程实在是太浪费时间了!于是直接写一 ...

  7. 2019牛客网暑假多校训练第四场 K —number

    链接:https://ac.nowcoder.com/acm/contest/884/K来源:牛客网 题目描述 300iq loves numbers who are multiple of 300. ...

  8. Codeforces Round #621 (Div. 1 + Div. 2)D dij(思维)

    题:https://codeforces.com/contest/1307/problem/D 题意:给定无向图,n为点,m为边.在给个k,为特殊点的数目,题目要求在这些特殊点上连一条边,让新图最短路 ...

  9. UML-如何画SSD?

    1.SSD来自哪里?答:用例文本 2.如何为系统事件和操作命名? 3.SSD中的哪些需要放到词汇表中? SSD元素包含 1).操作名称 2).参数 3).返回数据 这些元素,必须要简洁.但别人可能不太 ...

  10. 将iso mount 到nfs 目录问题

    最近有个需求,需要在多台系统安装程序,安装文件是iso 格式的,最普通的办法就是拷贝到其它系统,然后mount loop 到本地目录. 但是比较麻烦,而且当前已经有一个nfs 服务端了,于是想出一个办 ...