简说Python之面向对象
之前介绍了函数。对象代表了什么。可以称为“一篮子”计划,把数据属性和方法集合在一起,汇总成一个对象(object)。在C++中,这个称为类的概念。
Python对象
对象可以比喻为一个物种,例如:狗,它有颜色,名字,年龄,种类等特性,它的行为动作,会吼,会跳,会睡觉等等。而对象=action+attribute。
举例:我们设置一个对象的属性和动作。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class dog:
def jump(self):
print("名字叫",self.name,"的小狗跳起来了")
def introduce(self):
print("这只小狗叫做",self.name,",它是一只",self.color,"的小狗,","它今年",self.age)
mydog = dog() #类实例化
mydog.name ="小黄" #设置name属性
mydog.color = "棕色" #设置color属性
mydog.age = "8岁" #设置age属性
mydog.jump()
mydog.introduce()
另存为object01.py,执行结果如下:
G:\Py>python object01.py
名字叫 小黄 的小狗跳起来了
这只小狗叫做 小黄 ,它是一只 棕色 的小狗, 它今年 8岁
上述结果,可以看出对象的一些属性,不用前期定义,可以在实例化之后。再设置属性。不用先前定义好,有别于其他语言。
对象的内置方法
__init__方法
除了想之前那样,后面定义对象的属性。可以使用__init__方法,在创建一个类的实例的时候,通过传参的方式。用来初始化你要设置对象的属性值。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class dog:
def __init__(self, name, color, age):
self.name = name
self.color = color
self.age = age
def jump(self):
print("名字叫",self.name,"的小狗跳起来了")
def introduce(self):
print("这只初始化小狗叫做",self.name,",它是一只",self.color,"的小狗,","它今年",self.age)
mydog = dog("小黄","棕色","8岁")
mydog.jump()
mydog.introduce()
另存为object02.py,执行结果如下:
G:\Py>python object02.py
名字叫 小黄 的小狗跳起来了
这只初始化小狗叫做 小黄 ,它是一只 棕色 的小狗, 它今年 8岁
__str__方法
如果不使用__str__方法,直接执行实例化,等到的效果如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class dog:
def __init__(self, name, color, age):
self.name = name
self.color = color
self.age = age
def jump(self):
print("名字叫",self.name,"的小狗跳起来了")
def introduce(self):
print("这只初始化小狗叫做",self.name,",它是一只",self.color,"的小狗,","它今年",self.age)
mydog = dog("小黄","棕色","8岁")
print (mydog)
执行的效果如下:
G:\Py>python object03.py
<__main__.dog object at 0x000000000257CFC8>
上面说明:实例在main主程序中,定义了一个dog对象,内存位置为:0x000000000257CFC8
如果想显示其他内容,可以使用特殊方法__str__,如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class dog:
def __init__(self, name, color, age):
self.name = name
self.color = color
self.age = age
def __str__(self):
msg = "this object called:" +self.name
return msg
mydog = dog("小黄","棕色","8岁")
print (mydog)
另存为:object04.py,得出如下的结果:
G:\Py>python object04.py
this object called:小黄
对象的多态
多态(polymorphism),表示在不同的类里,有同名的方法。
举例如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Triangle:
def __init__(self, width, height):
self.width = width
self.height = height
def getArea(self):
area = self.width * self.height / 2.0
return area
class Square:
def __init__(self, size):
self.size = size
def getArea(self):
area = self.size * self.size
return area
myTriangle = Triangle(4,5)
TriangleArea = myTriangle.getArea()
print("三角形的面积为:",TriangleArea)
mySquare = Square(4)
SquareArea = mySquare.getArea()
print("正方形的面积为:",SquareArea)
另存为object05.py,结果如下:
G:\Py>python object05.py
三角形的面积为: 10.0
正方形的面积为: 16
对象的封装
由于抽象的原则,调用对象的时候,无需知道里面的细节。直接调用其对象的方法。等到想要的结果。如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class dog:
def setName(self,name):
self.name = name
def getName(self):
print("小狗的名字叫做:",self.name)
mydog = dog()
mydog.setName("小黑")
mydog.getName()
另存为:object06.py,执行结果如下:
G:\Py>python object06.py
小狗的名字叫做: 小黑
对象的继承
代码的重用,派生了继承的思路。通过继承创建的类为:子类或者派生类。被继承的类称为:基类,父类或超类。
语法:
class 派生类名(基类名)
...
举例如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class dog:
def __init__(self, name, color, age):
self.name = name
self.color = color
self.age = age
def jump(self):
print("名字叫",self.name,"的小狗跳起来了")
def introduce(self):
print("这只初始化小狗叫做",self.name,",它是一只",self.color,"的小狗,","它今年",self.age)
class Zdog(dog):
def sleep(self):
print("名字叫",self.name,"的小狗睡着了")
mydog = Zdog("小黄","棕色","8岁") #调用父类的初始化方法
mydog.introduce() #调用父类的introduce
mydog.sleep() #调用子类的方法
另存为:object07.py,执行效果如下:
G:\Py>python object07.py
这只初始化小狗叫做 小黄 ,它是一只 棕色 的小狗, 它今年 8岁
名字叫 小黄 的小狗睡着了
简说Python之面向对象的更多相关文章
- 简学Python第六章__class面向对象编程与异常处理
Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...
- PYTHON开发--面向对象基础入门
面向对象 一:面向对象初级 1.思考:首先在python中,以前我们以前用到的几乎都是函数式编程,但是有时候函数式编程其中代码重复利用率太高,我们往往会把这些重复代码写进一个函数日后去调用,所以呢,今 ...
- Python之面向对象与类
本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 子类属性查找顺序 一.面向对象的概念 1. "面向对象(OOP)"是什么? ...
- 【转】Python之面向对象与类
[转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...
- Python之面向对象封装
Python之面向对象封装 封装不是单纯意义的隐藏 什么是封装: 将数据放在一个设定好的盒子里,并标出数据可以实现的功能,将功能按钮外露,而隐藏其功能的工作原理,就是封装. 要怎么封装: 你余额宝有多 ...
- python初始面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...
- 简说Python发展及其就业前景
简说python 发展历史 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. python从ABC语言 ...
- Python 【面向对象】
前言 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- Python的面向对象3
接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ...
随机推荐
- Docker部署之使用docker-compose部署(全新的干净的服务器,从0开始搭建)
部署环境准备 安装yum # 安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 安装d ...
- 感悟:FPGA的并行处理与PC的多线程处理
前言 FPGA的并行设计是其高速处理的核心之一, 通过并行地处理大量的数据实现预期的功能; PC的多线程设计则是处理大量的内容而衍生出的一种处理方式, 其本质是利用CPU的高速处理能力, 将单个线程以 ...
- ZYNQ7000系列学习之TF卡读写(2)
ZYNQ读写实验(2) 1.实验原理 在TF卡读写实验1中,已经将每一个步骤都做完了,但是最后得到的结果是错误的.那个时候由于TF没有格式化,显示的是错误信息.在格式化后,再次实验,得到了预期的结果. ...
- STM32中RFID模块(MFRC522)简单应用
1. 前言 此篇只是对RFID模块的简单概述以及应用,没有原理,对提供的店家提供的代码,进行注释,以及简单使用流程 2. 函数 //功 能:寻卡 //参数说明: req_code[IN]:寻卡方式 ...
- Windows下mDNS查询API—DnsStartMulticastQuery/DnsStopMulticastQuery的使用
背景及问题: 目前很多局域网设备通过mNDS协议实现互联,IP地址为自动IP段-169.254.x.x,有时候设备厂家提供的API需要通过知晓局域网中的IP地址/设备名,才能连接该设备.这样要求每个软 ...
- OpenHarmony Meetup 广州站 OpenHarmony正当时—技术开源
招募令 OpenHarmony Meetup 广州站 火热招募中,等待激情四射的开发者,线下参与OpenHarmonyMeetup线下交流 展示前沿技术.探讨未来可能.让你了解更多专属OpenHa ...
- HUAWEI DevEco Testing注入攻击测试:以攻为守,守护OpenHarmony终端安全
OpenAtom OpenHarmony(以下简称"OpenHarmony")作为面向全场景的开源分布式操作系统,可广泛应用于智能家居物联网终端.智能穿戴.智慧大屏.汽车智能座舱. ...
- IDEA快捷键快速补齐类和对象名
CTRL+ALT+V ----------快速补齐 类和对象名 如: new String("123") 光标放到最后 按下快捷键补齐为红色部分 String s = ne ...
- HarmonyOS自定义抽奖转盘开发(ArkTS)
介绍 本篇Codelab是基于画布组件.显式动画,实现的一个自定义抽奖圆形转盘.包含如下功能: 1. 通过画布组件Canvas,画出抽奖圆形转盘. 2. 通过显式动画启动抽奖功能. 3. 通 ...
- redis 简单整理——主从拓扑图[二十二]
前言 Redis的复制拓扑结构可以支持单层或多层复制关系,根据拓扑复杂性 可以分为以下三种:一主一从.一主多从.树状主从结构,下面分别介绍. 正文 一主一从结构 一主一从结构是最简单的复制拓扑结构,用 ...