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. 解决ssh连接问题2

    ssh远程出现问题shell request failed on channel 0 1.修改/etc/security/limits.conf ssh_exchange_identification ...

  2. 用java实现操作两个数据库的数据

    1.首先需要在jdbc的配置文件里面配置两个数据库的连接 数据库1的配置 driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://地址:3306/数 ...

  3. Leetcode 存在重复元素 (219,220)

    219. 存在重复元素 II 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. / ...

  4. Flutter数据库Sqflite之增删改查

    Flutter数据库Sqflite之增删改查   简介 sqflite是Flutter的SQLite插件,支持iOS和Android,目前官方版本是sqflite1.1.3 sqflite插件地址:h ...

  5. Vue 组件&组件之间的通信 之 使用slot分发内容

    slot详细介绍网址:https://cn.vuejs.org/v2/api/#slot 有时候我们需要在自定义组件内书写一些内容,例如: <com-a> <h1>title& ...

  6. Java线程基础(一)

    说在前面,经过一段学习过后,自己发觉线程在Java中占有举足轻重的地位,总觉得如此复杂的线程知识点一定要好好理清才好消化,因而有了这篇文章. 但因鄙人资历尚浅,如有遗漏错误之处还请广大网友不吝赐教. ...

  7. Java序列化,解决字段为null与序列化后首字母变小写问题

    fastjson.jar package com.apt.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.se ...

  8. 异常处理与网络基础中的tcp,udp协议

    # 异常处理: # 什么是异常?异常和错误的区别 # Error 语法错误 比较明显的错误 在编译代码阶段就能检测出来 # Iteration 异常 在执行代码的过程中引发的异常 # 异常发生之后的效 ...

  9. 王之泰201771010131《面向对象程序设计(java)》第十五周学习总结

    第一部分:理论知识学习部分 第13 章 部署应用程序 1.jar文件 a) java 程序的打包:编译完成后,员 将.class 文件压缩打包为 .jar 文件后, GUI 界面 程序就可以直接双击图 ...

  10. list,tuple,dict,set的增删改查

    数据结构 list tuple dict set 增 append insert    d['key']=value  add 删 pop pop(0)    d.pop('name') pop re ...