Python面向对象中类(class)的简单理解与用法分析


Posted in Python onFebruary 21, 2020

本文实例讲述了Python面向对象中类(class)的简单理解与用法。分享给大家供大家参考,具体如下:

我们先来创建一个简单的类

class Fish(object):
   pass
xiaoming = Fish()

一个基础类(base class) Fish(鱼)类就创建好了。class Fish(object)等同于class Fish()

caoyu = Fish() 语句创建了一个对象:xiaoming(小明)。变量名 = 类名+() 实例化 类

下面对Fish类进行扩充

class Fish():
  def weight(self,weight):
    print("鱼的重量:{}".format(weight))
xiaoming = Fish()
xiaoming.weight(100)

运行结果:

鱼的重量:100

关于self:

  • self代表类(class)的实例(instance)
  • self可以用其他词汇代替,name,you等,这只不过是约定俗成的
  • self必须定义,但不需要手动传值

我们在这个类里面定义了一个函数weight(),函数有两个参数self和weight,self我们只需要在创建函数时定义即可,传值调用时不用管。

当我们想给这个Fish类预设一些属性,初始化创建的实例化对象时,就可以定义一个__init__方法,在创建对象时自动进行初始化,

__init__前面是两个下划线

class Fish():
  def __init__(self):
    print("鱼都生活在水里。")
  def weight(self,weight):
    print("鱼的重量:{}".format(weight))
xiaoming = Fish()
#xiaoming.weight(100)

注释掉caoyu.weight(100)得到结果为:

鱼都生活在水里。

上面的代码定义了一个__init__方法,在caoyu这个对象建立的时候自动运行这个方法,打印输出了“鱼都生活在水里。”

创建了Fish() 鱼 类,突然觉得这个类包括的鱼太多了,那我们再来一个细分,即从Fish() 这个父类的基础之上,创建一个子类。子类继承了父类的一些属性,比如鱼都生活在水里,但又具有自己独有的特征,即属性。我们通过 class caoyu(Fish)定义了Fish父类下的caoyu(草鱼)子类。

class x(y)创建一个x类是y类的子类,就是创建子类的一般方法

class Fish():
  def __init__(self):
    print("鱼都生活在水里。")
  def weight(self,weight):
    print("鱼的重量:{}".format(weight))
class caoyu(Fish):
   pass
xiaoli = caoyu()

输出结果:

鱼都生活在水里。

从上面的代码可以看到,class caoyu(Fish)这个类是Fish的子类,子类会继承父类的属性。我们实例化caoyu类后,就输出了“鱼生活在水里”,继承自父类Fish()的__init__方法。我们也可以重新定义子类的__init__方法,父类的__init__方法就会失效,就像下面这样:

class Fish():
  def __init__(self):
    print("鱼都生活在水里。")
  def weight(self,weight):
    print("鱼的重量:{}".format(weight))
class caoyu(Fish):
   def __init__(self):
    print("鱼类都有鳃。但不会得腮腺炎。")
xiaoli = caoyu()

输出结果为:

鱼类都有鳃。但不会得腮腺炎。

我们也可以在子类中调用父类的函数

xiaoli.weight(100)

输出结果为:

鱼类都有鳃。但不会得腮腺炎。
鱼的重量:100

总结:

我们首先创建了一个基础类Fish(鱼)类(class),然后我们需要进行实例化(instance)出一个对象(object),我们实例化对象的名字叫做xiaoming(小明),就像我在菜市场买了一条鱼,我必须通过买这个动作(实例化),买了之后才拥有了一条鱼,一条属于我的“鱼”:xiaoming。然后我能用xiaoming这条鱼来煲汤(函数),做菜或者看他在水里游,这些动作就像调用类里面的函数一样,只有来了鱼才能做这些动作,为了做这些动作还需要加入葱姜蒜这些佐料(参数)。

而我们创建了子类caoyu(草鱼),草鱼也是鱼的一种,所以它也有父类Fish()的一些基本的属性,有鳃,可以在水里自由呼吸,同时也可以拿来煲汤,(这就继承了鱼的普遍属性)但它也有自己的特点,它可能做水煮鱼片比做酸菜鱼好吃,这是与其他鱼区别的地方。

  • class Fish(): 创建一个基本类 Fish
  • class caoyu(Fish): 创建一个类caoyu,它是类Fish()的子类
  • class Fish(): def init(self): 定义一个方法__init__,作用是对类class 进行初始化,比如给鱼基本属性:能在水中呼吸。
  • class Fish(): def weight(self, J):Fish()类下定义一个weight函数,接收self和J作为参数,用于说明鱼的重量
  • xiaoming = Fish(): 将xiaoming设置为类Fish()的一个实例
  • xiaoming.weight(J): 从xiaoming对象中找到函数weight,并用self和J参数调用它,self由Python自动填入,所以调用时只传入参数J

以上只是个人粗浅的理解,面向对象是个很深的东西,还需多多练习,慢慢消化理解!

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
跟老齐学Python之关于类的初步认识
Oct 11 Python
Python映射拆分操作符用法实例
May 19 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Python处理文本换行符实例代码
Feb 03 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
python线程池threadpool使用篇
Apr 27 Python
详解Django rest_framework实现RESTful API
May 24 Python
利用nohup来开启python文件的方法
Jan 14 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 #Python
python读写文件write和flush的实现方式
Feb 21 #Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 #Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 #Python
python使用Geany编辑器配置方法
Feb 21 #Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 #Python
解决Python logging模块无法正常输出日志的问题
Feb 21 #Python
You might like
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
Yii rules常用规则示例
2016/03/15 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
浅谈Python基础之I/O模型
2017/05/11 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
OpenCV 模板匹配
2019/07/10 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
ASP.NET Core中的配置详解
2021/02/05 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
公司薪酬管理制度
2014/01/31 职场文书
美术教师自我鉴定
2014/02/12 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
珍爱生命主题班会
2015/08/13 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
python单元测试之pytest的使用
2021/06/07 Python
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫