python基础15 ---面像对象的程序设计
面向对象的程序设计
一、面向对象的程序设计简介
1、面向对象程序设计的由来。
我们之前虽然学习过了面向过程的程序,它的核心是面向过程,一步一步的设计好了的流程,虽然极大的降低了程序的复杂度,但是一个设计
好了的流程只能满足一个程序后期的可扩展性差,所以为了解决面向过程的程序可扩展性差的缺点,产生了面向对象的程序。他是解决了
面向过程中可扩展性差的问题,如果程序需要扩展就可以对需要扩展的某个对象单独进行修改,就会立刻反映到整个程序体系中,不需要
牵一发而动全身。
注释:像操作系统的开机流程,他就相当于一个面向过程的程序,一步一步设计好了的,但是像我们玩的王者荣耀中的英雄人物,他们就是一
个面向对象的程序,因为某个英雄要添加新的技能时就可以在这个英雄的对象里面添加。
2、面向对象程序的优缺点。
1.优点:解决了程序的可扩展性,对某一程序对象的单独修改就可以立刻反应到整个体系中,一般应用于程序变动需求比较大的软件中,比较
游戏,人物的特征与技能都是面向对象程序大展身手的好地方。
2.缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的
交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死
3个人,这个游戏就失去平衡。
二、类和对象
1、对象和类的定义
在英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特征与技能的结合体就一个对象。
在一组对象中,从他们的特性和技能中提取共有的内容就是类,类是相同特征和技能的结合体。
2、python中对象和类的表示方式。
在python中,用变量表示特征,用函数表示技能,因而类是变量与函数的结合体,对象是变量与方法(指向类的函数)的结合体
三、类简介
1、创建一个类。
class 类名:
'类的文档字符串' #相当于定义了个变量(特性)也可以是字符串,统称为类的数据部分。
类体#相当于定义了个函数(技能),统称为类的函数部分。
2、类的作用。
1.作用1是属性引用(引用=增删改查):
1.1引用类的数据属性,该属性与所有对象/实例共享。
格式为:类名.变量名(类中定义的变量的变量名)#可通过print(类名.变量名)来查看相对应的值
1.2引用类的函数属性,该属性与所有对象/实例共享。
格式为:类名.函数(类中定义的函数)#可通过print(类名.函数)来查看相对应的值
1.3删除类的属性
格式为 :del 类名.变量名(类中定义的函数)
1.4增加类的属性
格式为 :类名.需要增加的变量名=‘ 字符串’
2.作用2是实例化(__init__与self)
2.1.类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征。
2.2.self的作用是在实例化时自动将对象/实例本身传给__init__的第一个参数,self可以是任意名字,但是瞎几把写别人就看不懂了。
3、查看一个类。
1.格式:dir(类名)#查出的是一个名字列表
2.格式:类名.__dict__#查出的是一个字典,key为属性名,value为属性值
四、对象简介
1、对象是关于类而实际存在的一个例子,先有类再有对象。
2、对象/实例只有一种作用:属性引用
3、对象/实例本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象
同一个类的方法绑定到不同的对象上,属于不同的方法,内存地址都不会一样。
五、 类名称空间与对象/实例名称空间
1、创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性
2、类有两种属性:数据属性和函数属性其中类的数据属性是共享给所有对象的而类的函数属性是绑定到所有对象的:
3、创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性。在obj.name会先从obj自己的名称空间里找
name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常
python基础15 ---面像对象的程序设计的更多相关文章
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- Python基础教程之List对象 转
Python基础教程之List对象 时间:2014-01-19 来源:服务器之家 投稿:root 1.PyListObject对象typedef struct { PyObjec ...
- python基础学习18----面向对象简述
这里就不再讲面向对象的相关概念知识或者与面向过程的比较了,直接进入类的学习 1.类的创建 class people: def __init__(self):#构造函数 pass sfencs=peop ...
- Python基础(2)--对象类型
Python使用对象模型来存储数据.构造任何类型的值都是一个对象 所有的Python对象都拥有三个特性:身份.类型.值 身份: 每一个对象都有一个唯一的身份来标志自己,任何对象的身份可以使用内建函数i ...
- Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)
一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点: ...
- python基础(15):内置函数(一)
1. 内置函数 什么是内置函数? 就是python给你提供的,拿来直接⽤的函数,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68个内置函数.他们就是pyth ...
- #python基础学习模块:marshal 对象的序列化
#标准库地址:https://docs.python.org/2/library/marshal.html"""有时候,要把内存中一个对象持久化保存磁盘或者序列化二进制流 ...
- python基础15下_迭代器_生成器
print(dir([])) #告诉我列表拥有的所有方法 # 双下方法 # print([1].__add__([2])) print([1]+[2]) ret = set(dir([]))& ...
- python基础15上_迭代器_生成器
# 迭代器和生成器 # 迭代器: # 双下方法 : 很少直接调用的方法.一般情况下,是通过其他语法触发的 # 可迭代的 —— 可迭代协议 含有__iter__的方法('__iter__' in dir ...
随机推荐
- Nginx探索三
这次探索一下http 请求 request 这节我们讲request,在nginx中我们指的是http请求,详细到nginx中的数据结构是ngx_http_request_t. ngx_http_re ...
- debounce 防抖动函数
http://lodash.think2011.net/debounce _.debounce(func, [wait=0], [options]) 创建一个防抖动函数. 该函数会在 wait 毫秒后 ...
- mongoDB Java SDK CRUD操作例子
Example: package com.sdfwerwer.test; import java.net.UnknownHostException; import com.mongodb.Basi ...
- 【SpringMVC学习11】SpringMVC中的拦截器
Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...
- android tooggle button
1 http://stackoverflow.com/questions/9938315/toggle-button-in-iphone-style 2 http://blog.csdn.net/bi ...
- JSON Web Token (JWT) 实现与使用方法
1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该 ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- Mac下配置mnmp环境
虽然比较喜欢玩下新语言, 但是php还是常会用到的. lnmp很多人都听过, 但是不能用在Mac上面, 另外还有个mnpp但在osx 10.8.3下面跑不起来.所以自己手动一步步安装, 整理了方便安装 ...
- python函数形参中的*args和**kwargs
转载:https://www.cnblogs.com/xuyuanyuan123/p/6674645.html 多个实参,放到一个元组里面,以*开头,可以传多个参数:**是形参中按照关键字传值把多余的 ...
- 基于日志处理的ElasticSearch的学(gen)习(feng)
最近学了点solr,然后有听说了ElasticSearch,就想着也学一下ElasticSearch,然后看见了ElasticSearch用于日志的收集的分析,这里就来学习一下. 百度一下Elasti ...