零基础入门学习Python(34) 面向对象
什么是类
- 对象是模拟真实世界,把数据和代码都封装在一起
- 类 = 属性 + 方法
一个对象的特征称为“属性”,一个对象的行为称为“方法”
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) 面向对象相关推荐
- 零基础入门学习Python(35)面向对象编程
self是什么? Python的self相当于C++的this指针 由同一个类可以生成无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,Python就知道要操作哪个对 ...
- 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)
小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...
- 零基础python必背代码-零基础入门学习python 96集全
零基础入门学习python 96集全 第000讲 愉快的开始(视频+课件)xa0 第001讲 我和Python第一次亲密接触(视频+课件)xa0 第002讲 用Python设第一个游戏(视频+课件+源 ...
- 零基础学python pdf-笔记《零基础入门学习Python(第2版)》PDF+课件+代码分析
通过自学编程,感觉到基础知识很重要,越到后面越能发现这一点,光记住是不行的,还要灵活运用,要多调试代码,计算机就是一个不断练习,不断遇到问题,解决问题的工种,要根据实际的业务能想到对应的语法,实际项目 ...
- 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版
Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...
- 零基础入门python小甲鱼-小甲鱼零基础入门学习Python百度云下载 | 宅男君
Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...
- python零基础入门教程百度云-小甲鱼零基础入门学习Python百度云下载 | 宅男君
Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...
- 小甲鱼python教程视频怎么样-小甲鱼零基础入门学习Python视频教程全套96集
资源介绍 教程名称: 小甲鱼零基础入门学习Python视频教程全套96集 课程简介: xa0 xa0 Python具有跨平台特点,Python可以在各种不同类型的计算机上运行,Windows.MAC. ...
- 零基础入门学习Python,我与python的第一次亲密接触后的感受!
前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...
最新文章
- 基于iscsi实现文件存储共享
- 为网站加入Drupal星球制作RSS订阅源
- 初步学习Prometheus的微服务监控功能
- 阿里开发者招聘节 | 面试题05: 关于epoll和select的区别,哪些说法是正确的?
- Spring Boot基础学习笔记23:用户自定义授权管理
- if判断用户名 linux,Shell脚本IF条件判断和判断条件总结
- java io面试题_【Java面试】Java常见IO面试题!
- 2021 第十二届蓝桥杯大赛软件赛省赛(第二场),C/C++大学B组题解
- SSAO + FXAA
- 常见linux软件下载地址
- 一线数据分析师教你如何写简历才能脱颖而出!
- Softmax函数及其导数
- Pulseaudio入坑
- 调用Python的PyAutoGUI模块中的doubleClick函数无反应
- java的类型_java数据类型
- 记一个 Harvester SNAT 案例
- 为什么要做网站备案?
- haarcascades各种下xml下载
- java开发系统内核:让内核从严重错误中恢复
- 自研工业级机器视觉通用平台VisionBank
热门文章
- 大厂程序员和北京户口教师女友买房分歧,要求分配产权怕离婚扯皮
- 浅谈程序员的“内卷化”
- 两个高频设计类面试题:如何设计HashMap和线程池
- 拼多多退出春晚红包合作,由抖音补位!
- 年薪30万+,那些35岁的程序员都是如何度过 “中年危机” 的?
- Redis亿级数据过滤和布隆过滤器
- 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
- 闲鱼亿级商品结构化背后的思考和演进
- 深入分析Spark任务调度的原理--Java后端同学入门Spark编程系列
- 提升码农90%学习效率的10大学习工具