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. vue 重构项目第一步(vue-cli跟bootstrap)

    一.先安装jq跟bootstrap 1.因为bootstrap依赖jq,先安装jq----->npm install jquery@1.11.3 --save-dev   ----->可以 ...

  2. python class继承

    https://blog.csdn.net/brucewong0516/article/details/79121179 类继承: class SubClassName(parentClass,[,p ...

  3. OLTP和OLAP的区别

    OLTP和OLAP的区别 联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改.比如在银行的一笔交易记录,就是一 ...

  4. SAP abap 内表增加字段方法,结构复用

    1.include data: begin of gth_qamr.         include structure qamr. data: kurztext like qamv-kurztext ...

  5. win10 1803版本unable to start ssh-agent service, error :1058

    PowerShell安装了pshazz或者posh-git,但是打开的时候提示 unable to start ssh-agent service, error :1058 1803的设置上面可以看到 ...

  6. Unity 2018.2.8 旧版本安装包和破解软件

    声明:本文所提供的所有软件均来自于互联网,仅供个人研究和学习使用,请勿用于商业用途,下载后请于24小时内删除,请支持正版! 最近Unity官网下载的旧版本,都无法正常破解.此链接有之前下载的离线安装包 ...

  7. hdu2159 FATE----完全背包

    标准完全背包板子,动态方程为dp[j][x]=max(dp[j][x],dp[j-c[i]][x-1]+a[i]); 其中,dp[j][x]表示花费j点耐心杀x个怪所能得到的最大经验值. 具体代码如下 ...

  8. linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总

    (一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]:  只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...

  9. Python初次实现MapReduce——WordCount

    前言 Hadoop 本身是用 Java 开发的,所以之前的MapReduce代码小练都是由Java代码编写,但是通过Hadoop Streaming,我们可以使用任意语言来编写程序,让Hadoop 运 ...

  10. Gradle 简记

    不是 Gradle,就是 Maven吧.对比下: Maven: 推荐(?)了一个默认的项目结构和生命周期,但是太过死板 虽然暴露了 API 接口,但是插件定制太过复杂 和 Ant 一样,仍然无法表达复 ...