python函数的面向对象——面向对象设计
通过几个函数式编号演进,理解面向对象设计
def01.py
dog1 = {
'name':'元昊',
'gender':'母',
'type':'藏獒'
}
dog2 = {
'name':'李李',
'gender':'公',
'type':'腊肠'
}
def jiao(dog):
print('一条狗[%s],汪汪'%dog['name'])
def yaoren(dog):
print('一条狗[%s]正在咬人'%dog['type'])
jiao(dog1)
yaoren(dog1)
yaoren(dog2)
def02.py
def dog():
def jiao(dog):
print('一条狗[%s],汪汪'%dog['name']) def yaoren(dog):
print('一条狗[%s]正在咬人'%dog['type']) dog1 = {
'name': '元昊',
'gender': '母',
'type': '藏獒',
'jiao':jiao,
'yaoren':yaoren
}
return dog1 d1 = dog()
d1['jiao'](d1)
def03.py
def dog(name,gender,type):
def jiao(dog):
print('一条狗[%s],汪汪'%dog['name']) def yaoren(dog):
print('一条狗[%s]正在咬人'%dog['type']) dog1 = {
'name': name,
'gender': gender,
'type': type,
'jiao':jiao,#内部函数
'yaoren':yaoren#内部函数
}
return dog1#因为作用域的问题,所以一定要用内部的return 返回jiao,yaoren的函数,才能被外部调用 d1 = dog('张明','母','腊肠') 24 d1['jiao'](d1)#引入返回的那个数组d1 ,
def04.py
def dog(name,gender,type):
def jiao(dog):
print('一条狗[%s],汪汪'%dog['name']) def yaoren(dog):
print('一条狗[%s]正在咬人'%dog['type']) def init(name,gender,type):
dog1 = {
'name': name,
'gender': gender,
'type': type,
'jiao':jiao,#内部函数
'yaoren':yaoren#内部函数
}
return dog1 return init(name,gender,type) d1 = dog('张明','母','腊肠')
26 print(d1['name'],d1['gender'])
d1['jiao'](d1)#引入返回的那个数组d1 ,
# 那么一个函数,
# 就是给定不同属性,设置属性到它内部,
# 并且它内部的函数使用了这些属性,完成了新的动作,
# 通过返回方法至一个字典当中,让外部调用这个方法(属性和方法都需要让外部去访问,在字典类型当中来讲,是平等的),
# 即完成了所谓的【面向对象】
# 对象在不描述之前什么都不是。
# 对象就是需要描述它的动作和特征,才能去定义它。比如:人,长什么样,能做什么;灯泡,是什么样,能做什么。
# 类是抽象的,只有属性和方法。 dog()函数就是
# 但对象是经过动作和特征的定义的。d1 定义后,就是一条狗了
# 这就是面向对象设计
类就像模板,定义后就是一个对象了。
由 类-----产生-----对象的过程叫做实例化(实例=对象)
在python当中,没有要求你一定要写面向对象的代码。用面向对象的语言,和一个程序的设计是面对对象的,两者无任何关系。
你写的程序是不是面向对象的,和你用的语言是不是面向对象的无关系!面向对象设计,只不过是函数/过程式编程的演进。关键在于面向对象的设计思路。
python函数的面向对象——面向对象设计的更多相关文章
- python面向对象编程设计与开发
一.什么是面向对象的程序设计 1.何为数据结构? 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,如列表.字典. 2.何为编程? 编程是指程序员用特定的语法+数据结构+算法,组成的代码,告 ...
- 利用 Python 尝试采用面向对象的设计方法计算图形面积及周长
利用 Python 尝试采用面向对象的设计方法.(1)设计一个基类 Shape:包含两个成员函数:def cal_area(): 计算并返回该图形的面积,保留两位小数:def cal_perimete ...
- python基础整理4——面向对象装饰器惰性器及高级模块
面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...
- python之旅:面向对象的程序设计
一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/moyand/p/8784210.html 二 什么是面向对象的程序设计及为什么要有它 面向过程的 ...
- python(23)- 面向对象简单介绍
面向概述 面向过程:根据业务逻辑从上到下写垒代码 面向过程的设计的核心是过程,过程即解决问题的步骤, 面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西 优点:极大降低了程序的复杂 ...
- python(25)- 面向对象补充Ⅰ
一.如何使用类 1.实例化:创建对象 类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征. 例子一 x=int(10) print(x) python中一切 ...
- Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)
Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: 将一些东西封装到一个地方,你还可以取出来( ...
- python day10: 反射补充,面向对象
目录 pythdon day 10 1. 反射补充 16. 面向对象 16.1 面向对象初步介绍 16.2 面向对象和面向过程区别 16.3 对象的进化 17. 类class 17.1 类的定义 17 ...
- Python笔记(十七)_面向对象编程
面向对象编程 概念:简称OOP,是一种程序设计思想:OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数 面向对象的设计思想:抽象出类class,根据类class创建实例对象instan ...
随机推荐
- bootstrap简单图文环绕效果
一. 下载bootstrap-3.3.7 二. 在html页面引入css,js; eg: <link src="bootstrap-3.3.7-dist/css/b ...
- Java数据持久层框架 MyBatis之API学习七(动态 SQL详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- 导入Mybatis_Spring项目遇到的问题
1. 问题: jdk版本不匹配 解决方法:首先 到项目空间的 .setting文件中找到 org.eclipse.wst.common.project.facet.core.xml 修改参 ...
- JavaSE-反射-获取类或者对象的四种方法
1.使用Class类的静态方法Class.forName("xxxx"); 新建一个要想要获取的类 package org.burning.sport.javase.classlo ...
- mybatis实战教程二:多对一关联查询(一对多)
多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...
- linux_RAID
什么是RAID? 磁盘阵列,把多个磁盘组合成一个磁盘组,在逻辑上看起来就是一块大的磁盘,提供单个物理磁盘的存储量和更高的存储性能,同时提供不同级别的冗余备份的一种技术,不同的RAID技术对应不同级别 ...
- js_3_for_if_try
在js中有哪些特殊变量? null 指向一个空地址,一个特殊的地址 var u 定义了一个特殊变量u,类型未定义,boolean(u)=false js中的for循环是什么样子? 对列表: for(v ...
- Linux普通用户修改owner非本人文件为什么成功
关键字:错误提示:E45 已设定选项’readonly’(请加!强制执行) Linux对文件和目录有很好的权限管理,但今天遇到一个比较诡异的事情,普通用户对文件权限不可写,但可以强制保存该文件,这样就 ...
- http_build_query()函数使用方法
http_build_query()函数的作用是使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串. 写法格式:http_build_query ( mixed $query ...
- kickstart无人值守
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 高逼格装系统的方法 Kickstar Cobbler 注意,kickstart并不是一个服务的名称,只是装系统的方 ...