1、初识面向对象
 
    面向过程:一切以事务的发展流程为中心
 
        优点:负责的问题流程化,编写相对简单
        缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发而动全身。
 
    面向对象:一切以对象为中心,一切皆为对象,具体的某一个事务就是对象。
                    我们面向的不再是事务发展的流程,而是操作某一个事务的个体
 
        优点:可扩展性强,对某一个对象单独修改会立刻反映到整个体系中。对属性和动作修改都很容易
        缺点:编程的复杂度高于面向过程,可控性差。无法像面向过程的程序设计流水线式可以很精准的预测问题的处理流程和结果。
 
面向对象的应用场景:需求经常变化的软件,一般需求都集中在用户层,互联网应用,企业内部软件,游戏等。
 
2、类,对象
 
        类是创建对象的第一步,对象就是通过类来创造的具体的东西。
 
类与对象的关系:类是对事务的总结,抽象的概念,类用来描述对象,对象是类的实例化的结果,对象能执行那些方法都由类来决定,类中定义了什么,对象就拥有什么。
__init__(self,参数)  参数一般作为属性设置给对象,对象就是self,对象性的封装。

def 方法(self,参数):  方法,第一个参数一般是固定的self,当前类的对象

创建类:

class 类名:

    def __init__(self):  # 初始化方法,又被称为构造方法
self.属性 = 值
self.属性 = 值
self.属性 = 值 def fangfa(self):
方法体(函数体,return)

创建对象:

     变量 = 类名()  #实例化  <--> 创建

      变量.属性  # 访问对象的属性信息

      变量.方法()  # 访问类中的方法

下面以造车来举例:

class Car:  # 类名首字母大写,严格遵守驼峰命名规则
pass # 造车
c = Car() #类名() 表示创建对象
c.color = 'red' # 对象.属性 中间的点表示‘的’ ,当属性不存在的时候,相当于添加一个属性
c.paizhao = '京A888888'
print(c.color)
print(c.paizhao) c.color = 'blue' # 当属性存在的时候,是修改属性星系
# 相当于一个字典,属性为key,等号后边的内容为value
class User:

    def __init__(self,username,password):
self.username = username
self.password = password def login(self):
uname = input('请输入用户名:')
passw = input('请输入密码') if uname == self.username and passw == self.password:
print('登陆成功')
else:
print('登陆失败') info = User('zhangmeng','ni123')
info.login()

用面向对象的思维完成用户登录

class User:

    def __init__(self,username,password):
self.username = username
self.password = password def login(self):
uname = input('请输入用户名:')
passw = input('请输入密码') if uname == self.username and passw == self.password:
print('登陆成功')
else:
print('登陆失败') info = User('zhangmeng','ni123')
info.login()
3、面向对象 和面向过程的比对
 
 1、函数式:函数侧重的是功能,将功能封装到函数中,调用方便
 2、面向对象编程:对象侧重的是归类;对整个系统进行分析,分析出需要哪些对象,然后给对象进行分类
先写类,然后使用类创建对象,最后用对象去执行相关操作。
 
 
python同时支持面向对象和面向过程:
    如果写一些比较小的程序用面向对象,程序很复杂,很庞大,建议用面向过程
 
4、面向对象的三大特征
 
   封装
 
        把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块,函数。对象,打包成模块
 
        1、对属性的封装(__init__())
                 self.xxx = xxx
         2、对方法和功能的封装
class Student:
def __init__(self,name,ID,grade):
self.name = name
self.ID = ID
self.grade = grade stu1 = Student('张欣','','三年级') # 把多个信息(值)保存在一个对象中
stu2 = Student('黄瑶','','六年级') def choose(s):
print('选择%s去参加竞赛'%s.name) choose(stu1)
 
继承
 
        子类自动拥有父类中除了私有属性外的其他所有内容,对父类进行扩展。
        父类的对象不能执行子类中的功能
 
        当出现x是一种y的时候,推荐使用继承关系
 
        python支持多继承,查找顺序:先找离它近的
class foo:
def getmoney(self):
print('快到碗里来') class bar(foo):
pass c = bar()
c.getmoney()
# 快到碗里来
多态
 
        同一个对象,多种形态。
 
        好处:程序具有超高的可扩展性,面向对象思想的核心与灵魂,python自带多态。
# 封装,继承,多态

class Animal:
def run(self):
print('动物在跑') def chi(self):
print('动物在吃') class Cat(Animal): def __init__(self,name,color,hobby):
self.name = name
self.color = color
self.hobby = hobby class Dog(Animal):
def __init__(self,name,color,hobby):
self.name = name
self.color = color
self.hobby = hobby def chi(self):
print('吃吃吃') c = Cat('xiaomei','红色','偷吃鱼')
d = Dog('budian','黑色','咬东西') def func(ani):
ani.chi() func(c)
func(d)

 
 

python - 初识面向对象的更多相关文章

  1. Python初识面向对象

    初识面向对象 面向过程 VS 面向对象 面向过程的圣墟设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西 优点是:极大的降低 ...

  2. python之路--初识面向对象

    一 . 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大 ...

  3. python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)

    一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...

  4. python全栈开发从入门到放弃之初识面向对象

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...

  5. 巨蟒python全栈开发-第16天 核能来袭-初识面向对象

    一.今日内容总览(上帝视角,大象自己进冰箱,控制时机) #转换思想(从面向过程到面向对象) 1.初识面向对象 面向过程: 一切以事物的发展流程为中心. 面向对象: 一切以对象为中心,一切皆为对象,具体 ...

  6. python基础(23):面向过程与面向对象的优劣、初识面向对象

    1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...

  7. Python 入门 之 初识面向对象

    Python 入门 之 初识面向对象 1.初识面向对象编程 (核心--对象) (1)观察以下代码: # 面向过程编程 s = "alexdsb" count = 0 for i i ...

  8. 【学习笔记】--- 老男孩学Python,day16-17 初识面向对象,类名称空间,查询顺序,组合

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...

  9. python学习之老男孩python全栈第九期_day022知识点总结——初识面向对象

    一. 面向对象的引入# 人狗大战 def person(name,HP,aggr,sex): person = { 'name':name, # 昵称 'HP':HP, # 生命值 'aggr':ag ...

随机推荐

  1. HTTP劫持和DNS劫持

    HTTP劫持和DNS劫持 首先对运营商的劫持行为做一些分析,他们的目的无非就是赚钱,而赚钱的方式有两种: 1.对正常网站加入额外的广告,这包括网页内浮层或弹出广告窗口: 2.针对一些广告联盟或带推广链 ...

  2. redis 在 php 中的应用(key篇)

    本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: KEY(键) DEL           ...

  3. 认识volatile的工作原理

    前言 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”.可见性的意思是当 ...

  4. 【annotation】非人类物种基因组注释(MSU为例)

    基因组注释工具ANNOVAR是一款非常好用的注释软件,功能强大,输出数据简单美中不足就是对于非人类物种来说UI不够完善,因此总结一下整个注释的过程,帮助别人快乐自己. 首先我们需要明确我们需要的数据和 ...

  5. asp.net core 同时添加Identity和Bearer认证

    是这样的,网上介绍的Oauth认证一般都是授权服务器和资源服务器分开,但是我只想在一个网站中使用asp.net core自带的Identity认证给用户访问网站用,同时提供一些api接口通过Token ...

  6. goldengate密码加密

    ----------------ogg加密GGSCI (ogghost) 10> encrypt password goldengate,ENCRYPTKEY defaultUsing defa ...

  7. 快速签发 Let's Encrypt 证书指南

    本文仅记录给自己的网站添加"小绿锁"的动手操作过程,不涉及 HTTPS 工作原理等内容的讲解,感兴趣的同学可以参考篇尾的文章自行了解. 简单了解下我的实验环境: 云服务器:Cent ...

  8. vue+vuex 回退定位到初始位置

    先放出两张图(没错,你还在9012,做为一名资深设计师我唯一的技能点就是留白),简单说明下问题未做回退定位(从落地页回退,每次都回到A位置)想死啊有木有,每次都需要手动重新定位来选择,你大哥看到你做个 ...

  9. dao层、service和action的运用和区别

    DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,对于数据库的操作,具体到对于某个表的增删改查, 也就是说某个DAO一定是和数据库的某一张表一一对应的 ...

  10. js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作

    例如你需要这样格式的数据: [{"name":"合肥市","arrey":[{"lat":"31.862323 ...