简说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部署Prometheus
1.安装运行Prometheus 下面介绍如何使用Prometheus.Grafana.CAdvisor.node-exporter.mysqld-exporter对本机服务器性能.Docker容器. ...
- VIVADO原理图中的概念
VIVADO原理图的基本作用 * 查看不同层次下的逻辑关系或者网表关系 * 检查逻辑设计是否可以通过数字电路实现 * 观察重要的信号的走向,分析可能的优化方向 VIVADO原理图几个基本概念 (1) ...
- verilog中的数据类型
Verilog中的数据格式 1.基本概念 verilog中写一个数据的通用格式是 n'b000_000_···_000,表示一个n位的二进制数.基于这个通用式,可以将其分为三个部分:位数.加权数和实际 ...
- java基础 韩顺平老师的 面向对象(高级) 自己记的部分笔记
373,类变量引出 代码就提到了问题分析里的3点 package com.hspedu.static_; public class ChildGame { public static void mai ...
- 测试开发之系统篇-安装KVM虚拟机
虚拟机(Virtual Machine)和容器(Container)是两种流行的虚拟化技术. 虚拟机模拟机器的硬件,包括了完整的操作系统和应用,它一旦被开启,预分配给它的资源将全部被占用.容器是运行在 ...
- Jetty的http3模块
启用http3模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http3 命令的输出,如下: ALERT: There are ena ...
- el-table边框颜色修改—骨灰级
一.前言说明 1. 网上很多都是通过上下左右边框方式,如: .el-table { border-bottom: 1px solid black; border-right: 1px solid bl ...
- C# 报错 Lc.exe已退出 代码为-1 如何解决
完美解决方案:把项目文件夹下Properties文件夹下的licenses.licx文件删除,重新编译即可:
- Linux CentOs6.4 静态IP 设置
Linux CentOs6.4 静态IP 设置 分类: IT技术 2013-04-07 09:20 2330人阅读 评论(1) 收藏 举报 To do that, just log on as ...
- k8s 深入篇———— k8s 的本质[四]
前言 简单整理一下k8s的本质. 正文 首先,Kubernetes 项目要解决的问题是什么? 编排?调度?容器云?还是集群管理? 实际上,这个问题到目前为止都没有固定的答案.因为在不同的发展阶段,Ku ...