之前介绍了函数。对象代表了什么。可以称为“一篮子”计划,把数据属性和方法集合在一起,汇总成一个对象(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之面向对象的更多相关文章

  1. 简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群  群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...

  2. PYTHON开发--面向对象基础入门

    面向对象 一:面向对象初级 1.思考:首先在python中,以前我们以前用到的几乎都是函数式编程,但是有时候函数式编程其中代码重复利用率太高,我们往往会把这些重复代码写进一个函数日后去调用,所以呢,今 ...

  3. Python之面向对象与类

    本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 子类属性查找顺序 一.面向对象的概念 1. "面向对象(OOP)"是什么? ...

  4. 【转】Python之面向对象与类

    [转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...

  5. Python之面向对象封装

    Python之面向对象封装 封装不是单纯意义的隐藏 什么是封装: 将数据放在一个设定好的盒子里,并标出数据可以实现的功能,将功能按钮外露,而隐藏其功能的工作原理,就是封装. 要怎么封装: 你余额宝有多 ...

  6. python初始面向对象

    阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...

  7. 简说Python发展及其就业前景

    简说python 发展历史 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. python从ABC语言 ...

  8. Python 【面向对象】

    前言 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言 ...

  9. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  10. Python的面向对象3

    接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ...

随机推荐

  1. docker部署Prometheus

    1.安装运行Prometheus 下面介绍如何使用Prometheus.Grafana.CAdvisor.node-exporter.mysqld-exporter对本机服务器性能.Docker容器. ...

  2. VIVADO原理图中的概念

    VIVADO原理图的基本作用 * 查看不同层次下的逻辑关系或者网表关系 * 检查逻辑设计是否可以通过数字电路实现 * 观察重要的信号的走向,分析可能的优化方向 VIVADO原理图几个基本概念 (1) ...

  3. verilog中的数据类型

    Verilog中的数据格式 1.基本概念 verilog中写一个数据的通用格式是 n'b000_000_···_000,表示一个n位的二进制数.基于这个通用式,可以将其分为三个部分:位数.加权数和实际 ...

  4. java基础 韩顺平老师的 面向对象(高级) 自己记的部分笔记

    373,类变量引出 代码就提到了问题分析里的3点 package com.hspedu.static_; public class ChildGame { public static void mai ...

  5. 测试开发之系统篇-安装KVM虚拟机

    虚拟机(Virtual Machine)和容器(Container)是两种流行的虚拟化技术. 虚拟机模拟机器的硬件,包括了完整的操作系统和应用,它一旦被开启,预分配给它的资源将全部被占用.容器是运行在 ...

  6. Jetty的http3模块

    启用http3模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http3 命令的输出,如下: ALERT: There are ena ...

  7. el-table边框颜色修改—骨灰级

    一.前言说明 1. 网上很多都是通过上下左右边框方式,如: .el-table { border-bottom: 1px solid black; border-right: 1px solid bl ...

  8. C# 报错 Lc.exe已退出 代码为-1 如何解决

    完美解决方案:把项目文件夹下Properties文件夹下的licenses.licx文件删除,重新编译即可:

  9. Linux CentOs6.4 静态IP 设置

    Linux CentOs6.4 静态IP 设置 分类: IT技术 2013-04-07 09:20  2330人阅读  评论(1)  收藏  举报 To do that, just log on as ...

  10. k8s 深入篇———— k8s 的本质[四]

    前言 简单整理一下k8s的本质. 正文 首先,Kubernetes 项目要解决的问题是什么? 编排?调度?容器云?还是集群管理? 实际上,这个问题到目前为止都没有固定的答案.因为在不同的发展阶段,Ku ...