Python面向过程和面向对象基础
总结一下:
面向过程编程:根据业务逻辑从上到下的写代码-----就是一个project写到底,重复利用性比较差
函数式:将某些特定功能代码封装到函数中------方便日后调用
面向对象:对函数进行分类封装,使开发更快捷更灵活
面向过程编程:
name = "mac"
age =
sex = 'male'
#......
print("%s's %s,%d years old!" %(name,sex,age))
函数式:
def name(name):
print('name is %s' %name)
def age(age):
print('age is %d' %age)
def sex(sex):
print('sex is %s' %sex) name('mac')
age()
sex('male')
面向对象:
一、封装
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。
所以,在使用面向对象的封装特性时,需要:
- 将内容封装到某处
- 从某处调用被封装的内容
class Message():
def __init__(self,name,age):
self.name = name
self.__age = age def get_name(self):
return self.name
def get_age(self):
return self.__age message = Message('MAC',)
print(message.get_name(),message.get_age())
二、继承
继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。
class Parent(object):
def __init__(self,name,age,sex):
self.name = name
self.__age = age #表示私有
self.sex = sex def get_name(self):
return self.name
def get_age(self):
return self.__age
def get_sex(self):
return self.sex class Child(Parent): #继承Parent父类
def get_age(self):
return self.age P = Parent('mac',,'male')
C = Child('YYY',,'female')
print(P.get_name(),P.get_age(),P.get_sex())
print(C.get_name(),C.get_sex())
class Parent(object):
def __init__(self,name,age,sex):
self.name = name
self.__age = age #表示私有
self.sex = sex def get_name(self):
return self.name
def get_age(self):
return self.__age
def get_sex(self):
return self.sex class Child1(Parent): #继承Parent父类
def get_age(self,age):
self.age = age #私有类无法继承
return self.age
def get_sex(self):
return self.sex
class Child2(Parent):
def get_age(self):
return self.age
def func(x):
x.get_age P = Parent('mac',22,'male')
C1 = Child1('YYY1',24,'female')
C2 = Child2('YYY2',24,'female')
print(P.get_name(),P.get_age(),P.get_sex())
print(C1.get_name(),C1.get_sex(),C1.get_age(23))#调用自己的get_age()
三、多态 和多态性
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)
一 什么是多态性(请务必注意注意注意:多态与多态性是两种概念。)
多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同功能的函数。
在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
比如:老师.下课铃响了(),学生.下课铃响了(),老师执行的是下班操作,学生执行的是放学操作,虽然二者消息一样,但是执行的效果不同
多态性分为静态多态性和动态多态性
静态多态性:如任何类型都可以用运算符+进行运算
动态多态性:如下
class Parent(object):
def __init__(self,name,age,sex):
self.name = name
self.__age = age #表示私有
self.sex = sex def get_name(self):
return self.name
def get_age(self):
return self.__age
def get_sex(self):
return self.sex class Child1(Parent): #继承Parent父类
def get_age(self,age):
self.age = age
return self.age
def get_sex(self):
print(self.sex)
class Child2(Parent):
def get_sex(self):
print (self.sex)
def func(x):
x.get_sex() P = Parent('mac',22,'male')
C1 = Child1('YYY1',24,'male')
C2 = Child2('YYY2',24,'female')
C1.get_sex()
C2.get_sex()
func(C1)
func(C2)
Python面向过程和面向对象基础的更多相关文章
- python 面向过程和面向对象比较
面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度 ...
- python基础(23):面向过程与面向对象的优劣、初识面向对象
1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...
- 面向过程 vs 面向对象
从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...
- C++笔记005:用面向过程和面向对象方法求解圆形面积
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 结束了第一个hello world程序后,我们来用面向过程和面向对象两个方法来求解圆的面积这个问题,以能够更清晰的体会面向对象和面向过程. ...
- Python面向过程、模块的使用
一.Python面向过程 ''' 面向过程编程 核心过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.然后干什么... 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点 ...
- JS是面向过程、面向对象还是基于对象?面向对象的代码体现
一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...
- PHP面向过程和面向对象
php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...
- essential C++中关于面向过程和面向对象的说明
昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...
- C语言学习系列(二)面向过程和面向对象
一.基本定义 (一).面向过程(procedure oriented programming POP) 面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可. ...
随机推荐
- nodejs waterfall的使用
waterfall(tasks, [callback]) (多个函数依次执行,且前一个的输出为后一个的输入) 按顺序依次执行多个函数.每一个函数产生的值,都将传给下一个函数.如果中途出错,后面的函数将 ...
- django高级之爬虫基础
目录: 爬虫原理 requests模块 beautifulsoup模块 爬虫自动登陆示例 一.爬虫原理 Python非常适合用来开发网页爬虫,理由如下:1.抓取网页本身的接口相比与其他静态编程语言,如 ...
- 20165324 Java实验一
20165324 实验一 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 1 ...
- [golang note] 内建类型
基础类型 √ golang内建基础类型有布尔类型.整数类型.浮点类型.复数类型.字符串类型.字符类型和错误类型. 复合类型 √ golang支持的复合类型有指针.数组.数组切片.字典.通道.结构体和接 ...
- appium 智能滚动
- 无线路由MAC地址过滤安全可靠性讨论
无线路由MAC地址过滤安全可靠性讨论/如何实现,真的有效吗,如何防范 [内容导航] 什么是MAC地址过滤 突破MAC地址过滤步骤 捕获的无线客户端MAC地址 更改MAC地址来伪造身份 在W ...
- python3_time模块详解
python提供的时间模块time是需要单独引入: 1.time.sleep(secs)# 推迟调用线程的运行,secs指的是秒 time.sleep(secs) 2.time.time():返回当前 ...
- 20145328 《Java程序设计》第8周学习总结
20145328 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),re ...
- 20145335郝昊《java程序设计》第6周学习总结
20145335郝昊 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 串流(Stream): 数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出,可以使用输入串 ...
- linux下nano中复制粘贴剪切的快捷键是什么
答: 1.复制:alt+6 2.剪切:ctrl+k 3.粘贴:ctrl+u 4.自由剪切: ctrl+6指定起始剪切位置,按上下左右键来选中内容,然后按下ctrl+k即可自由剪切 5.撤销: alt+ ...