Python面向对象程序设计之类和对象、实例变量、类变量用法分析


Posted in Python onMarch 23, 2020

本文实例讲述了Python面向对象程序设计之类和对象、实例变量、类变量用法。分享给大家供大家参考,具体如下:


类和对象:

  • 类的定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类的优势:将一个对象的功能集中于一体,便于操作,降低了代码的重复。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

使用 class 语句来创建一个新类:

class Dog:
  #self 代表的是类的实例,代表当前对象的地址
  def __init__(self,name):##称为类的构造函数,进行初始化成员变量
    self.name=name
  def bulk(self):###自定义函数
    print("%s:汪汪!"%self.name)

d1=Dog("奥巴马")##创建对象,传入__init__所需的变量,self默认自动传入

d1.bulk()#调用方法
print(d1)

为什么要有self:

以类变量和实例变量为解释,对于共有属性,一般会在共有部分定义,不需要__init__,而比如说因为人人都有自己的名字,那么名字应该是一个人私有的。而类的函数由于为了节约资源,并不会拷贝给每一个对象,每一个对象都要从类的定义区中调用方法,对于涉及对象特有属性的方法,调用方法的时候必须传入自身对象self才能使函数获得私有的数据,而调用这个私有的数据使用”self.变量名”.

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

附:

什么是新式类:https://3water.com/article/183280.htm


实例变量和类变量:

  • 实例变量是对于每个实例都独有的数据,而类变量是该类所有实例共享的数据
  • 变量使用的顺序是:实例变量--》类变量,如果实例变量中没有才会去类变量中找
  • 【但即使是类中的变量,也是需要使用self.变量名来使用】
class Dog:
  age=8
  def __init__(self,name):
    self.name=name
  def bulk(self):
    print("汪汪")

d1=Dog("包子")
d2=Dog("馒头")
d1.age=10
print("Dog:",Dog.age,"\tD1:",d1.age,"\tD2:",d2.age)


-------------------------
结果:
Dog: 8   D1: 10   D2: 8
  • 节约论:python为了简洁性,不会复制一份类的数据给每一个对象,每一个对象之后存有其特有的属性,当其需要使用属性或方法时,先看自己有没有,如果没有再去类中找

类变量的创建:

  • 可以在声明类的时候定义

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

  • 也可以使用赋值来定义:

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

Python面向对象程序设计之类和对象、实例变量、类变量用法分析


实例变量的创建:

  • 可以在__init__中定义

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

  • 也可以使用赋值来定义:

Python面向对象程序设计之类和对象、实例变量、类变量用法分析

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

Python 相关文章推荐
python基础教程之自定义函数介绍
Aug 29 Python
python自动化测试之连接几组测试包实例
Sep 28 Python
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
Python验证企业工商注册码
Oct 25 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
python实现redis三种cas事务操作
Dec 19 Python
Python常见内置高效率函数用法示例
Jul 31 Python
详解python中Numpy的属性与创建矩阵
Sep 10 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
Anaconda的安装与虚拟环境建立
Nov 18 Python
Python3 shelve对象持久存储原理详解
Mar 23 #Python
python新式类和经典类的区别实例分析
Mar 23 #Python
Python count函数使用方法实例解析
Mar 23 #Python
使用python实现飞机大战游戏
Mar 23 #Python
如何在Django中使用聚合的实现示例
Mar 23 #Python
python3注册全局热键的实现
Mar 22 #Python
浅谈Python线程的同步互斥与死锁
Mar 22 #Python
You might like
一个MYSQL操作类
2006/11/16 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
php利用事务处理转账问题
2015/04/22 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python让列表倒序输出的实例
2018/06/25 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
了解一下python内建模块collections
2020/09/07 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
五四青年节活动总结
2015/02/10 职场文书
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS