博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python--反射(重点)、面向对象内置方法:如__str__、面向对象的软件开发
阅读量:5008 次
发布时间:2019-06-12

本文共 1770 字,大约阅读时间需要 5 分钟。

复习:
Python3统一了类与类型
类的名称空间在定义阶段产生,看名称空间:类.__dict__

 

 

Python3特点:可以多继承
Python3都是新式类

继承意义:解决重复代码
 
组合:也是解决重复代码
一个属性,比方老师有生日,就定义一个日期类,t.birth=Date()
 
抽象类:
继承实现原理:分新式类和经典类
 
如果所有分支没有汇聚,经典类和新式类继承原理一样,一条一条分支找
如果所有分支汇聚到一点,经典类:深度优先
新式类:广度优先
 
多态与多态性:
字符串本身只能存一个值
多态基于继承来的概念
 
封装:

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

 
类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式:
 

面向对象的软件开发:

面向对象的软件工程包括下面几个部分:

1.面向对象分析(object oriented analysis ,OOA)

软件工程中的系统分析阶段,要求分析员和用户结合在一起,对用户的需求做出精确的分析和明确的表述,从大的方面解析软件系统应该做什么,而不是怎么去做。面向对象的分析要按照面向对象的概念和方法,在对任务的分析中,从客观存在的事物和事物之间的关系,贵南出有关的对象(对象的‘特征’和‘技能’)以及对象之间的联系,并将具有相同属性和行为的对象用一个类class来标识。

    建立一个能反映这是工作情况的需求模型,此时的模型是粗略的。

2 面向对象设计(object oriented design,OOD)

    根据面向对象分析阶段形成的需求模型,对每一部分分别进行具体的设计。

    首先是类的设计,类的设计可能包含多个层次(利用继承与派生机制)。然后以这些类为基础提出程序设计的思路和方法,包括对算法的设计。

    在设计阶段并不牵涉任何一门具体的计算机语言,而是用一种更通用的描述工具(如伪代码或流程图)来描述

3 面向对象编程(object oriented programming,OOP)

    根据面向对象设计的结果,选择一种计算机语言把它写成程序,可以是python

4 面向对象测试(object oriented test,OOT)

    在写好程序后交给用户使用前,必须对程序进行严格的测试,测试的目的是发现程序中的错误并修正它。

    面向对的测试是用面向对象的方法进行测试,以类作为测试的基本单元。

5 面向对象维护(object oriendted soft maintenance,OOSM)

    正如对任何产品都需要进行售后服务和维护一样,软件在使用时也会出现一些问题,或者软件商想改进软件的性能,这就需要修改程序。

    由于使用了面向对象的方法开发程序,使用程序的维护比较容易。

    因为对象的封装性,修改一个对象对其他的对象影响很小,利用面向对象的方法维护程序,大大提高了软件维护的效率,可扩展性高。

 

    在面向对象方法中,最早发展的肯定是面向对象编程(OOP),那时OOA和OOD都还没有发展起来,因此程序设计者为了写出面向对象的程序,还必须深入到分析和设计领域,尤其是设计领域,那时的OOP实际上包含了现在的OOD和OOP两个阶段,这对程序设计者要求比较高,许多人感到很难掌握。

    现在设计一个大的软件,是严格按照面向对象软件工程的5个阶段进行的,这个5个阶段的工作不是由一个人从头到尾完成的,而是由不同的人分别完成,这样OOP阶段的任务就比较简单了。程序编写者只需要根据OOd提出的思路,用面向对象语言编写出程序既可。

    在一个大型软件开发过程中,OOP只是很小的一个部分。

    对于全栈开发的你来说,这五个阶段都有了,对于简单的问题,不必严格按照这个5个阶段进行,往往由程序设计者按照面向对象的方法进行程序设计,包括类的设计和程序的设计

反射:

__str__的用法:是一个绑定方法

注意:__str__一定要有一个字符串的返回值

__del__的用法:

__del__一般用于程序执行完毕
对象从内存清掉,就会触发__del__的执行

item系列:

 

 

 

其余部分,自行研究

描述符(__get__,__set__,__delete__)
 
metaclass元类,是类的类

转载于:https://www.cnblogs.com/metianzing/p/7132444.html

你可能感兴趣的文章
修改presto新版源码让他支持redash数据库
查看>>
Javascript的书写位置
查看>>
树-线索二叉树
查看>>
JAVA遇见HTML——Servlet篇:Servlet基础
查看>>
第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除...
查看>>
MySQL卸载重安装异常解决
查看>>
[转载]CMMI5访谈学习笔记(项目经理角色)
查看>>
python--继承关系
查看>>
LintCode 532: Reverse Pairs
查看>>
Python3列表、元组、字典、集合的方法
查看>>
从MVC到前后端分离
查看>>
数组中 Arrays类 、 选择排序 和 冒泡排序 、 二分查找
查看>>
P1736 创意吃鱼法
查看>>
Java并发编程(七)终结线程
查看>>
[转]CodeSmith和PowerDesigner的使用安装和数据库创建
查看>>
Android手机配置gcc,实现手机编译代码
查看>>
优雅使用mybatis
查看>>
设计模式学习之旅-抽象工厂模式
查看>>
接口测试(java+testng+ant+jenkins)第四篇jenkins
查看>>
Docker折腾手记-linux下安装
查看>>