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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
深入理解Python异常处理的哲学
Feb 01 Python
OpenCV图像颜色反转算法详解
May 13 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
Python打印特殊符号及对应编码解析
May 07 Python
在django中form的label和verbose name的区别说明
May 20 Python
python连接mysql有哪些方法
Jun 24 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
Python字符串查找基本操作代码案例
Oct 27 Python
python关于集合的知识案例详解
May 30 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获取远程图片并把它保存到本地的代码
2008/04/07 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
python实现PCA降维的示例详解
2020/02/24 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Keras设置以及获取权重的实现
2020/06/19 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
Ref与out有什么不同
2012/11/24 面试题
介绍一下Linux中的链接
2016/05/28 面试题
北大研究生linux应用求职信
2013/10/29 职场文书
安全标准化汇报材料
2014/02/03 职场文书
阿德的梦教学反思
2014/02/06 职场文书
宣传工作经验材料
2014/06/02 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
2015年技术员工作总结
2015/04/10 职场文书
汶川大地震感悟
2015/08/10 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
党员廉政准则心得体会
2016/01/20 职场文书