python学习之面向对象程序设计的一些思考
将属于一类的对象放在一起:
如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法实现。
不要让对象过于亲密:
方法应该只关心自己实例的特性,让其他实例管理自己的状态。
简单就好:
让方法小巧起来,一般来说,多数方法都应在30秒内被读完,尽量在代码的行数控制在一页或者一屏之内。
小心继承,尤其是多继承:
继承机制有时很有用,但也会在某些情况下让事情变得过于复杂,多继承难以正确使用,更难以调试。
在需要思考用什么类以及类有什么方法时,可以用以下方法。
1:写下问题的描述,把所有的名词、动词和形容词加下划线。
2:对于所有的名词,用作可能的类。
3:对于所有的动词,用作可能的方法。
4:对于所有的形容词,用作可能的特性。
5:将所有的方法和特性分配到类里。
当我们对即将做的事能抽象出一个模糊的对象草图时,就可以考虑类和对象之间的关系以及他们的作用。剩下的就是逐渐的精炼模型。
1:写下一系列的使用实例,也就是程序应用时的场景,试着包含所有的功能。
2:一步步考虑每个使用实例,保证模型包括所有需要的东西。如果有些遗漏的话就添加进去,如果某处不太正确则纠正,直到满意为止。
python学习之面向对象程序设计的一些思考的更多相关文章
- Python学习之==>面向对象编程(二)
一.类的特殊成员 我们在Python学习之==>面向对象编程(一)中已经介绍过了构造方法和析构方法,构造方法是在实例化时自动执行的方法,而析构方法是在实例被销毁的时候被执行,Python类成员中 ...
- python学习笔记--面向对象的编程和类
一.面向对象的编程 面向对象程序设计--Object Oriented Programming,简称oop,是一种程序设计思想.二.面向对象的特性类:class类,对比现实世界来说就是一个种类,一个模 ...
- Python学习之面向对象基础
python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等 1.定义类,创建和使用对象 #定义类 class Student(obje ...
- Python学习一(面向对象和函数式编程)
学习了一周的Python,虽然一本书还没看完但是也收获颇多,作为一个老码农竟然想起了曾经荒废好久的园子,写点东西当做是学习笔记吧 对Python的语法看的七七八八了,比较让我关注的还是他编程的思想,那 ...
- Python学习--10 面向对象编程
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 本节对于面向对象的概念不做 ...
- 从0开始的Python学习014面向对象编程
简介 到目前为止,我们的编程都是根据数据的函数和语句块来设计的,面向过程的编程.还有一种我们将数据和功能结合起来使用对象的形式,使用它里面的数据和方法这种方法叫做面向对象的编程. 类和对象是面向对象 ...
- python学习 day23 面向对象三大特性之继承
### 面向对象三大特性值继承#### 1.什么是继承 继承是一种关系,必须存在两个对象才可能产生这种关系,在现实生活中的继承,王思聪可以继承王健林的财产 被继承的成为父,继承的一方成为子 在程序中, ...
- Python学习-day6 面向对象概念
开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完. 如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了. 程序的可扩 ...
- python学习之面向对象
目录 __main__,__name__ __module__,__class__ __init__ __del__ __repr__,__str__ __mro__ __call__ __new__ ...
随机推荐
- python加解密
from Crypto.Cipher import AES import base64 secret_key = '1234567890123456' # 密匙 msg_text = 'test so ...
- Flask入门模板过滤器与测试器(五)
1 模板引擎之过滤器 概念 : 过滤器本质上是个转换函数,第一个参数是待过滤的变量.如果它有第二个参数,模板中就必须传进去. 过滤器使用管道符| 放在{{ }} Jinja2模板引擎提供了丰富的内置过 ...
- web端 调试 手机混合应用中的h5部分(chrome浏览器的devtool使用)
Learning Hybird App Test–Appium Java(Leyden) 浏览器的远程调试工具,使得我们可以通过PC上开启的控制台,调试手机浏览器中正在运行的代码.运行于 Androi ...
- JSP中include动作与指令
include指令 JSP中有三大指令:page,include,taglib,之前已经说过了page的用法.这里介绍下include. 使用语法如下: <%@ include file=&qu ...
- mysql的安装和使用
1.下载 数据库:mysql-3.23.53-win1 可视化工具:mysqlcc-0.9.4-win32 2.步骤: (1)解压mysql-3.23.53-win1(其他的也可以),按照步骤安装到你 ...
- Java程序员面试题集2
51.类ExampleA 继承Exception,类ExampleB 继承ExampleA. 有如下代码片断: try{ throw new ExampleB("b") }catc ...
- 最新DNS汇集
最近几日DNS大规模抽风,网络环境是一天比一天恶劣,于是收集了一些良心的DNS服务器地址,以备不时之需. 国内服务器: 1.OpenerDNS:42.120.21.30 2.114DNS:114.11 ...
- Android(java)学习笔记13:线程组的概述和使用
1. Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. (1)默认情况下,所有的线程都属于主线程组. public final T ...
- 基于bootstrap模态框的二次封装
一.参数设置 $.beamDialog(options); var defaults = { title:'标题', content:'内容', showCloseButton:true, //显示关 ...
- 一个简单示例看懂.Net 并行编程
此示例尽量以最简洁的代码演示并行处理的功能,此示例代码中分别用单线程和多线程分别执行5次耗时1秒的操作.打印出执行过程及耗时. 以下为示例代码,.net framework要求4.0以上. using ...