什么是类

  • 对象是模拟真实世界,把数据和代码都封装在一起
  • 类 = 属性 + 方法
    一个对象的特征称为“属性”,一个对象的行为称为“方法”
class Turtle:#Python中的类名约定以大写字母开头#特征的描述称为属性,在代码层面来看其实就是变量color = 'green'weight = '10'legs = '4'shell = Truemouth = '大嘴'#方法实际就是函数,通过调用这些函数来完成某些工作def climb(self):print('我正在很努力的向前爬...')def run(self):print('我正在飞快的向前跑...')def bite(self):print('咬死你咬死你!!!')def eat(self):print('有的吃,真满足...')def sleep(self):print('困了,睡了,晚安。。。')
  • 是一个对象的属性加方法,需要使用类来创建一个真正的对象,这个对象就称为这个类的一个实例,也叫实例对象

创建一个对象

  • 创建一个对象,也叫类的实例化
  • 类名后面跟着小括号,与调用函数是一样的,所以在Python中,类名约定用大写字母开头,函数用小写字母开头,这样更容易区分
  • 赋值的操作并不是必须的,但如果没有把创建好的实例对象赋值给一个变量,那么这个对象就没有办法使用,因为没有任何引用指向这个实例,最终会被Python的垃圾回收机制自动回收
  • 调用对象的方法用.即可
>>> tt = Turtle()#生成一个对象,与调用函数相同,用首字母大写与函数区分开来
>>> Turtle()#直接调用,没有后文引用,会被垃圾回收机制回收
>>> tt.climb()#调用方法

OO(Object Oriented)的特征

  • OOP = Object Oriented Program,面向对象编程
  • Python就是一种面向对象编程的语言,所以说Python无处不对象

特征1:封装

封装是一种信息隐蔽技术,使得数据更加安全
Python的列表其实就是一个对象,它提供了若干种方法供我们根据需求来调整整个列表,但是列表方法是如何实现的呢?我们并不知道,我们也知道列表对象有哪些变量,这就是所谓的封装,我们只需要知道方法名字,然后调用它实现自己需要的功能即可,具体如何实现我们并不知道

>>> list1 = [2,1,7,5,3]
>>> list1.sort()
>>> list1
[1, 2, 3, 5, 7]
>>> list1.append(9)
>>> list1
[1, 2, 3, 5, 7, 9]

特征2:继承

  • 继承是子类自动共享父类之间数据和方法的机制
>>> class Mylist(list):#希望继承list这个列表pass#占位符,不做任何事情>>> list2 = Mylist()#把类实例化,生成一个对象,并把对象赋值给变量
>>> list2.append(2)
>>> list2.append(3)#拥有了list.append这个方法
>>> list2.append(7)
>>> list2.sort()
>>> list2
[2, 3, 7]

特征3:多态

  • 不同对象对同一方法响应不同的行动
>>> class A:def fun(self):print('我是小A')>>> class B:def fun(self):print('我是小B')>>> a = A()
>>> b = B()
>>> a.fun()
我是小A
>>> b.fun()
我是小B

在这里,大家都调用一个叫fun的方法函数,名字一样的 但是实现不一样

Task

0. 对象中的属性和方法,在编程中实际是什么?
变量和函数
1. 类和对象是什么关系呢?
类和对象的关系就如同模具和用这个模具制作出的物品之间的关系。一个类为它的全部对象给出了一个统一的定义,而他的每个对象则是符合这种定义的一个实体,因此类和对象的关系就是抽象和具体的关系
2. 如果我们定义了一个猫类,那你能想象出由“猫”类实例化的对象有哪些?
波斯猫、Kitty
3. 类的定义有些时候或许不那么“拟物”,有时候会抽象一些,例如我们定义一个矩形类,那你会为此添加哪些属性和方法呢?
属性:边长
方法:面积,周长
4. 类的属性定义应该尽可能抽象还是尽可能具体?
尽可能抽象,更符合面向对象的思维
5. 请用一句话概括面向对象的几个特征?
封装 :对外部隐藏对象的工作细节
继承 :子类自动共享父类之间数据和方法的机制
多态:可以对不同类的对象调用相同的方法,产生不同的结果
6. 函数和方法有什么区别?
方法和函数几乎完全一样,但方法默认有一个self参数
7.按照以下提示尝试定义一个 Person 类并生成类实例对象。
属性:姓名(默认姓名为“小甲鱼”)
方法:打印姓名
提示:方法中对属性的引用形式需加上 self,如 self.name

class Person:name = '小甲鱼'def printName(self):print(self.name)

8.按照以下提示尝试定义一个矩形类并生成类实例对象。
属性:长和宽
方法:设置长和宽 -> setRect(self),获得长和宽 -> getRect(self),获得面积 -> getArea(self)
提示:方法中对属性的引用形式需加上 self,如 self.width’

class Rectangle():width = 4.00length = 5.00def getRect(self):print('这个矩形的长是:%.2f,宽是:%.2f'%(self.length,self.width))def setRect(self):print('请输入矩形的长和宽...')length = float(input('长:'))width = float(input('宽:'))def getArea(self):print(self.length * self.width)

零基础入门学习Python(34) 面向对象相关推荐

  1. 零基础入门学习Python(35)面向对象编程

    self是什么? Python的self相当于C++的this指针 由同一个类可以生成无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,Python就知道要操作哪个对 ...

  2. 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)

    小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...

  3. 零基础python必背代码-零基础入门学习python 96集全

    零基础入门学习python 96集全 第000讲 愉快的开始(视频+课件)xa0 第001讲 我和Python第一次亲密接触(视频+课件)xa0 第002讲 用Python设第一个游戏(视频+课件+源 ...

  4. 零基础学python pdf-笔记《零基础入门学习Python(第2版)》PDF+课件+代码分析

    通过自学编程,感觉到基础知识很重要,越到后面越能发现这一点,光记住是不行的,还要灵活运用,要多调试代码,计算机就是一个不断练习,不断遇到问题,解决问题的工种,要根据实际的业务能想到对应的语法,实际项目 ...

  5. 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版

    Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...

  6. 零基础入门python小甲鱼-小甲鱼零基础入门学习Python百度云下载 | 宅男君

    Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...

  7. python零基础入门教程百度云-小甲鱼零基础入门学习Python百度云下载 | 宅男君

    Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...

  8. 小甲鱼python教程视频怎么样-小甲鱼零基础入门学习Python视频教程全套96集

    资源介绍 教程名称: 小甲鱼零基础入门学习Python视频教程全套96集 课程简介: xa0 xa0 Python具有跨平台特点,Python可以在各种不同类型的计算机上运行,Windows.MAC. ...

  9. 零基础入门学习Python,我与python的第一次亲密接触后的感受!

    前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...

最新文章

  1. 基于iscsi实现文件存储共享
  2. 为网站加入Drupal星球制作RSS订阅源
  3. 初步学习Prometheus的微服务监控功能
  4. 阿里开发者招聘节 | 面试题05: 关于epoll和select的区别,哪些说法是正确的?
  5. Spring Boot基础学习笔记23:用户自定义授权管理
  6. if判断用户名 linux,Shell脚本IF条件判断和判断条件总结
  7. java io面试题_【Java面试】Java常见IO面试题!
  8. 2021 第十二届蓝桥杯大赛软件赛省赛(第二场),C/C++大学B组题解
  9. SSAO + FXAA
  10. 常见linux软件下载地址
  11. 一线数据分析师教你如何写简历才能脱颖而出!
  12. Softmax函数及其导数
  13. Pulseaudio入坑
  14. 调用Python的PyAutoGUI模块中的doubleClick函数无反应
  15. java的类型_java数据类型
  16. 记一个 Harvester SNAT 案例
  17. 为什么要做网站备案?
  18. haarcascades各种下xml下载
  19. java开发系统内核:让内核从严重错误中恢复
  20. 自研工业级机器视觉通用平台VisionBank

热门文章

  1. 大厂程序员和北京户口教师女友买房分歧,要求分配产权怕离婚扯皮
  2. 浅谈程序员的“内卷化”
  3. 两个高频设计类面试题:如何设计HashMap和线程池
  4. 拼多多退出春晚红包合作,由抖音补位!
  5. 年薪30万+,那些35岁的程序员都是如何度过 “中年危机” 的?
  6. Redis亿级数据过滤和布隆过滤器
  7. 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
  8. 闲鱼亿级商品结构化背后的思考和演进
  9. 深入分析Spark任务调度的原理--Java后端同学入门Spark编程系列
  10. 提升码农90%学习效率的10大学习工具