python之路--初识面向对象

时间:2021-12-23 02:03:52

一 . 初识面向对象

面向过程:
  一切以事务的发展流程为中心.
面向对象:
  一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方:
  大象进冰箱
    步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门     面向对象:大象, 你进冰箱.
      此时主语是大象. 我操纵的是大象. 此时的大象就是对象

二 . 类.对象

类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.
  对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象   类与对象的关系:
    类是对xxx事物的归类.
      写:
        __init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装.         def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.
          pass     对象是xx类型的一个具体
      创建对象: 类名()
创建类:
    class 类名:       def __init__(self): # 初始化方法. 又被成为构造方法
        self.属性 = 值
        self.属性 = 值
        self.属性 = 值       def fangfa(self):
        方法体(函数体, return)     创建对象:
      变量 = 类名() # 实例化 <-> 创建对象       变量.属性 # 访问对象的属性信息
      变量.方法() # 访问类中的方法
class Hero:
def __init__(self, waihao, name, story):
self.waihao = waihao
self.name = name
self.story = story
def q(self):
print("拎着宝剑嗷嗷跑")
def w(self):
print("护盾")
def e(self):
print("电风扇")
def r(self):
print("大宝剑")
gw = Hero("德玛西亚之力", "盖伦", "500年前盖伦拿一个破棍子捅破了玉皇大帝的尿壶...埋在五指山下")
gw.q()
gw.w()
gw.r()
class Phone:
def __init__(self, color, dianchi, num, price):
self.color = color
self.dianchi = dianchi
self.num = num
self.price = price
def call(self, ren):
print("使用我的%s颜色价值%s的电话打给%s" % (self.color, self.price, ren))
def play(self):
print("电话可以打游戏")
sj = Phone("黑色", "5W安", "", "9W欧元")
sj.call("刘德华")
sj.play()

三 . 面向对象和面向过程的对比  

如果写一些比较小的程序用面向过程.
程序很复杂. 很庞大建议用面向对象.

三 . 面向对象的三大特征

封装:
    1. 对属性的封装(__init__())
    self.xxx = xxx
    2. 对方法和功能的封装 继承
  子类自动拥有父类中除了私有内容外的其他所有内容
  class Bar(Foo): Bar对Foo进行了扩展
    pass
  当出现x是一种y的时候. 推荐使用继承关系
  python支持多继承. 查找顺序: 先找离他近的. 多态(python原生直接就是多态)
  python更多的支持的是鸭子模型, 只要会嘎嘎叫就是好鸭子

  鸭子模型

# 鸭子模型

class Animal:
def eat(self):
print('动物会吃') class Tiger:
def eat(self):
print('老虎也会吃') class Cat:
def eat(self):
print('猫也能吃') # 只要能eat()的就是动物
def func(animal):
animal.eat() t = Tiger() # Tiger有eat() 所以Tiger是动物
c = Cat() # Cat有eat() 所以Cat也是动物
func(t)
func(c)

  

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

  1. python之路----初识面向对象(二)

    类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...

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

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

  3. (转)Python之路&comma;Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战&gt ...

  4. Python之路-初识python及环境搭建与测试(Python安装、Anaconda安装、PyCharm安装)

    一.认识Python 起源 Python的作者是著名的“龟叔”Guido van Rossum,他希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻 ...

  5. Python之路&comma;Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏 ...

  6. Python之路: 面向对象

    Python是一门面向对象的语言,所以在Python中创建一个类和对象是很容易的.接下来了解一下面像对象的一些基本特征. 面向对象技术简介 类(class):描述具有相同的属性和方法的对象的集合.定义 ...

  7. 转:Python之路&comma;Day6 - 面向对象学习

    这篇文章写的不错,转来收了 转自:http://www.cnblogs.com/alex3714/articles/5188179.html   本节内容:   面向对象编程介绍 为什么要用面向对象进 ...

  8. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  9. 十一Python之路&comma;Day6 - 面向对象学习

      本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战& ...

随机推荐

  1. &period;NET Core采用的全新配置系统&lbrack;4&rsqb;&colon; &OpenCurlyDoubleQuote;Options模式”下各种类型的Options对象是如何绑定的?

    旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上.配置绑定的目标类型可以是一个简单的基元类型,也可以是一个自定义数据类型,还可以是一个数组.集合或者字典类 ...

  2. shell 字符截取

    Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. # 读sharp 谐音 杀: ${var#*//} 杀掉//左边的,保留右边的 ...

  3. 循环冗余校验(CRC)算法入门引导

    目录 写给嵌入式程序员的循环冗余校验CRC算法入门引导 前言 从奇偶校验说起 累加和校验 初识 CRC 算法 CRC算法的编程实现 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌 ...

  4. Docker for Mac与IntelliJ Docker Integration插件的兼容性问题

    笔者在自己的Mac上安装的是Docker for Mac,而不是Docker Toolbox. 这两者最主要的区别在于Docker for Mac用HyperKit作为虚拟化解决方案而不是Virtua ...

  5. pow&lpar;&rpar;函数结果强制转化为int造成误差的分析

    开发环境:codeblocks,编译器gcc 在计算102时调用pow(10, 2),再强制类型转换为int类型后输出: printf(,)); 得到的结果却是:99 这是因为 double pow( ...

  6. C&plus;&plus;实验四

    // 类graph的实现 #include "graph.h" #include <iostream> using namespace std; // 带参数的构造函数 ...

  7. 【Alpha】第五次Scrum meeting

    今日重大事件一览: 姓名 今日完成任务 所耗时间 刘乾 今日没有完成那个Issue..TuT第一次这么努力工作的我没有完成任务...真的是任务太坑啦. 任务完成了 60% Issue链接:https: ...

  8. 【ContestHunter】【弱省胡策】【Round6】

    KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每 ...

  9. 监控视频采集与Web直播开发全流程分析

    内容概要: 摄像头 => FFmpeg => Nginx服务器 => 浏览器 从摄像头拉取rtsp流 转码成rtmp流向推流服务器写入 利用html5播放 1.开发流程 1.1 通过 ...

  10. Golang之继承,多重继承(struct)

    热乎的代码来了 package main import "fmt" /* 继承 一个结构体嵌到另一个结构体,称作组合 匿名和组合的区别 如果一个struct嵌套了另一个匿名结构体, ...