Python之Class&Object用法详解


Posted in Python onDecember 25, 2019

类和对象的概念很难去用简明的文字描述清楚。从知乎上面的一个回答中可以尝试去理解:

对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

类:类是一个模板,它描述一类对象的行为和状态。

我觉得有一本书对这个类与对象描述的特别好:Head First Java第2版中文版,大家可以通过Java去学习类和对象。

class

class是用来定义类的。类在面向对象编程里面是很有用的,能够大大提升开发效率和代码维护性。直接上代码学习:

class student(object):
  def print_info(self):
    print("student's info is very important!")

student1 = student()
student1.print_info()

运行结果如图:

Python之Class&Object用法详解

class student():
  def __init__(self,name,gender):
    self.Name = name
    self.Gender = gender
    print("student's name is ",name,' and it is a ',gender)

testman = student("Mike","Male")

这个类可以通过一个__init__ 进行初始化,相当于定义类了。在主代码中,先要进行实例化,即testman = student() 然后才能调用里面的方法。运行结果如下:

Python之Class&Object用法详解

继承

关于继承,就是子类可以继承父类的公有函数。例如:

class Parent:
  def Family(self):
    print("we are family")

class Child(Parent):
  pass

father = Parent()
son = Child()

father.Family()
son.Family()

在这里,Parent 类是父类,Child 类是子类,但是通过定义,继承了父类。所以在后面实例化之后,son 依然可以调用父类的函数。最后的运行结果如下:

Python之Class&Object用法详解

override

当然,子类除了继承,还可以重写父类的函数功能。

class Parent:
  def Family(self):
    print("we are family")

class Child(Parent):
  def Family(self):
    print("hey,i am son")

father = Parent()
son = Child()

father.Family()
son.Family()

在这个例子中,Child 类重写了父类函数里面的Family 函数,最后的运行结果如下:

Python之Class&Object用法详解

super

super是一个超类。这个概念很抽象,但是用例子来说明一下就不会那么抽象了。

class Parent:
  def Family(self):
    print("we are family")

class Child(Parent):
  def Family(self):
    print("hey,i am son")
    super(Child,self).Family()
    print("again, i am son")

father = Parent()
son = Child()

father.Family()
son.Family()

运行结果如下:

从上面的例子很容易看出,super 就是将父类的函数再调用了一次。

Python之Class&Object用法详解

以上这篇Python之Class&Object用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python检测远程服务器tcp端口的方法
Mar 14 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
Flask框架配置与调试操作示例
Jul 23 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
django的ORM模型的实现原理
Mar 04 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
Python 静态方法和类方法实例分析
Nov 21 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
java关于string最常出现的面试题整理
Jan 18 Python
python shutil文件操作工具使用实例分析
Dec 25 #Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 #Python
如何基于python测量代码运行时间
Dec 25 #Python
python字典setdefault方法和get方法使用实例
Dec 25 #Python
Python 内置变量和函数的查看及说明介绍
Dec 25 #Python
python @propert装饰器使用方法原理解析
Dec 25 #Python
python 消除 futureWarning问题的解决
Dec 25 #Python
You might like
PHP集成FCK的函数代码
2008/09/27 PHP
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
在Python中使用成员运算符的示例
2015/05/13 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python3 批量扫描端口的例子
2019/07/25 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
python如何进行矩阵运算
2020/06/05 Python
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
乡镇一岗双责责任书
2015/01/29 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android