python_16_day

函数总结:

https://www.processon.com/view/link/5b718274e4b0555b39e1055f

面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。

优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。

缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。

面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自己当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。面向对象的程序设计好比如来设计西游记,如来要解决的问题是把经书传给东土大唐,如来想了想解决这个问题需要四个人:唐僧,沙和尚,猪八戒,孙悟空,每个人都有各自的特征和技能(这就是对象的概念,特征和技能分别对应对象的属性和方法),然而这并不好玩,于是如来又安排了一群妖魔鬼怪,为了防止师徒四人在取经路上被搞死,又安排了一群神仙保驾护航,这些都是对象。然后取经开始,师徒四人与妖魔鬼怪神仙互相缠斗着直到最后取得真经。如来根本不会管师徒四人按照什么流程去取。

面向对象的程序设计的

优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。

应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方。

在python 中面向对象的程序设计并不是全部。

面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。

了解一些名词:类、对象、实例、实例化

类:具有相同属性和技能的一类事物.
人类:
对象: 具体的类的表现,具体的实实在在的一个实例
人是一类,某个人是一个对象.
狗是一类,我家养的旺财是一个对象.

实例化:类——>对象的过程

 class Person:
'''类体:两部分:变量部分,方法(函数)部分'''
mind = '有思想' # 变量,静态变量,静态字段
animal = '高级动物'
faith = '有信仰'
def __init__(self):
print(self)
print(666)
def work(self): # 方法,函数,动态变量
print(self)
print('人类都会工作...')
def shop(self):
print('人类可以消费....') # 类名的角度
# 操作类中的静态变量
# 1, Person.__dict__ 查询类中的所有的内容 (不能进行增删改操作)
print(Person.__dict__)
print(Person.__dict__['faith'])
Person.__dict__['mind'] = '无脑'
print(Person.__dict__['mind'])
# 2, 万能的 . 对类中的单个的变量进行增删改查,用 万能的 点
print(Person.mind)
print(Person.animal) # 查
Person.money = '运用货币' # 增
Person.mind = '无脑的' # 改
del Person.mind
print(Person.__dict__) #操作类中的方法 (工作中基本不用类名去操作)
Person.work(111) # 对象的角度
ret = Person() # 类名+()的这个过程:实例化的过程(创建一个对象的过程),
# Person() 实例化对象,实例,对象.
print(ret)
#1,只要类名+() 产生一个对象,自动执行类中的__init__方法.

面向对象-各种角度


作业:

1,完成下列功能:
1.1创建一个人类Person,再类中创建3个静态变量(静态字段)
animal = '高级动物'
soul = '有灵魂'
language = '语言'
1.2在类中定义三个方法,吃饭,睡觉,工作.
1.3在此类中的__init__方法中,给对象封装5个属性:国家,姓名,性别,年龄,身高.
1.4实例化四个人类对象:
第一个人类对象p1属性为:中国,alex,未知,42,175.
第二个人类对象p2属性为:美国,武大,男,35,160.
第三个人类对象p3属性为:你自己定义.
第四个人类对象p4属性为:p1的国籍,p2的名字,p3的性别,p2的年龄,p3 的身高.
1.5 通过p1对象执行吃饭方法,方法里面打印:alex在吃饭.
1.6 通过p2对象执行吃饭方法,方法里面打印:武大在吃饭.
1.7 通过p3对象执行睡觉方法,方法里面打印:(p3对象自己的名字)在吃饭.
1.8 通过p1对象找到Person的静态变量 animal
1.9 通过p2对象找到Person的静态变量 soup
2.0 通过p3对象找到Person的静态变量 language
 class Person:
animal = '高级动物'
soul = '有灵魂'
language = '语言' def __init__(self, country, name, sex, age, height):
self.country = country
self.name = name
self.sex = sex
self.age = age
self.height = height def eat(self):
return "%s在吃饭" % self.name def sleep(self):
return '%s在睡觉' % self.name def work(self):
return '%s在工作' % self.name p1 = Person("中国", 'alex', '未知', 42, 175)
p2 = Person("美国", '武大', '男', 35, 160)
p3 = Person('中国', 'corn', '男', 21, 178)
p4 = Person(p1.country, p2.name, p3.sex, p2.age, p3.height) print(p1.eat())
print(p2.eat())
print(p3.eat()) print(p1.animal)
print(p2.soul)
print(p3.language)

作业1

2,通过自己创建类,实例化对象
在终端输出如下信息
小明,10岁,男,上山去砍柴
小明,10岁,男,开车去东北
小明,10岁,男,最爱大保健
老李,90岁,男,上山去砍柴
老李,90岁,男,开车去东北
老李,90岁,男,最爱大保健
老张…
 class Hobby:

     def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def hobby1(self):
return('%s,%s岁,%s,上山去砍柴' % (self.name,self.age,self.sex))
def hobby2(self):
return('%s,%s岁,%s,开车去东北' % (self.name,self.age,self.sex))
def hobby3(self):
return('%s,%s岁,%s,最爱大保健' % (self.name,self.age,self.sex)) p1 = Hobby("小明",10,'男')
p2 = Hobby('老李',90,'男') print(p1.hobby1())
print(p1.hobby2())
print(p1.hobby3())
print(p2.hobby1())
print(p2.hobby2())
print(p2.hobby3())

作业2

3,模拟英雄联盟写一个游戏人物的类(升级题).
要求:
(1)创建一个 Game_role的类.
(2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
(3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
例: 实例化一个对象 盖伦,ad为10, hp为100
实例化另个一个对象 剑豪 ad为20, hp为80
盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血, 还剩多少血'的提示功能.
 class Game_role:

     def __init__(self,name,ad,hp):
self.name = name
self.ad = ad
self.hp = hp
def attack(self,vicitm):
vicitm.hp = vicitm.hp - self.ad
print( "%s攻击%s,%s掉了%s血,还剩%s血" % (self.name, vicitm.name, vicitm.name, self.ad, vicitm.hp))
p1 = Game_role("盖伦",10,100)
p2 = Game_role('剑豪',20,80) p1.attack(p2)
print(p2.hp)

作业3


2018-07-24  20:02:25

python全栈开发-面向对象-初识的更多相关文章

  1. python全栈开发-面向对象-初识2

    python_17_day 今日主要内容: 1.类空间,对象空间,查询顺序. 2.组合. 1.类空间,对象空间,查询顺序. class Person: animal = '高级动物' soul = ' ...

  2. Python全栈开发:初识Python

    Pythton简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语 ...

  3. 【python全栈开发】初识python

    本人最开始接触python是在2013年接触,写过hello word!在此之前对开发类没有多大兴趣,不知道重要性,属于浑浑噩噩,忙忙乎乎,跌跌撞撞的.随后选择了Linux运维作为就业主攻方向. 经过 ...

  4. python全栈开发-面向对象-进阶2

    python_day_19 今日主要内容: 1.抽象类,接口类 2.多态 3.封装 1.抽象类,接口类 python 没有接口这个概念接口类,抽象类: 制定一个规范. 举个栗子:你的项目经理提一个需求 ...

  5. python全栈开发-面向对象-进阶

    python_day_18 1,面向对象的三大特性是什么?继承,多态,封装2,什么是面向对象的新式类?什么是经典类?凡是继承object类都是新式类.凡是不继承object类都是经典类.3,面向对象为 ...

  6. 巨蟒python全栈开发django2:初识django

    今日内容大纲: 1.起飞版web框架 2.自定制框架的流程 3.jinja2模板渲染初识 4.MVC&&MTV 5.django版本介绍及django安装 6.django初识(一些操 ...

  7. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  8. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  9. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

随机推荐

  1. Kali-linux分析密码

    在实现密码破解之前,介绍一下如何分析密码.分析密码的目的是,通过从目标系统.组织中收集信息来获得一个较小的密码字典.本节将介绍使用Ettercap工具或MSFCONSOLE来分析密码. 8.2.1 E ...

  2. [转]百度地图API详解之地图坐标系统

    博客原文地址:http://www.jiazhengblog.com/blog/2011/07/02/289/ 我们都知道地球是圆的,电脑显示器是平的,要想让位于球面的形状显示在平面的显示器上就必然需 ...

  3. URL列表

    MySql函数大全:http://www.cnblogs.com/xuyulin/p/5468102.html

  4. SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑

    习惯使用jpa操作对象的方式,现在用mybatis有点不习惯. 其实是懒得写SQL,增删改查那么简单的事情你帮我做了呗,mybatis:NO. 没办法,自己搞喽! 这里主要是实现了通过代码自动生成my ...

  5. PAT——1064. 朋友数

    如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号.给定一些整数,要求 ...

  6. 树莓派 4G模块 PPP 拨号 NDIS 拨号

    资料参考:树莓派使用4G模块(华为ME909s-821)亲身尝试的可行方法(上)

  7. Java与数据库学习总结

    1.连接数据库 package utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Re ...

  8. python写员工信息表作业笔记

    需求 流程图

  9. Hadoop集群搭建:用三台云服务器搭建HA集群(过程记录和分享)

    该文主要记录了自己用云服务器搭建集群的过程,也分享一些自己遇到的问题和解决方法.里面可能提及一些自己的理解,可能不够准确,希望大家能够指正我,谢谢. 1.什么是HA集群 HA :High Availa ...

  10. STM32(2)——GPIO

    对于初学者而言,最简单的是对芯片上的IO进行操作,我们学习ARM时候,第一个工程就是点亮LED,STM32F103ZET6通用输入输出接口(General-Purpose Inputs/Outputs ...