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中操作文件之read()方法的使用教程
May 24 Python
详解Python中的Cookie模块使用
Jul 06 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
用python实现k近邻算法的示例代码
Sep 06 Python
python datetime中strptime用法详解
Aug 29 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
Pytorch训练过程出现nan的解决方式
Jan 02 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
Python实现视频自动打码的示例代码
Apr 08 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
咖啡知识大全
2021/03/03 新手入门
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
php自动适应范围的分页代码
2008/08/05 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
JS作用域深度解析
2016/12/29 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
python 正则式 概述及常用字符
2009/05/07 Python
Python中文编码那些事
2014/06/25 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
详解Python发送email的三种方式
2018/10/18 Python
python实现键盘控制鼠标移动
2020/11/27 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
学生发电厂实习自我鉴定
2013/09/22 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
新年晚会开场白
2015/05/29 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
如何利用golang运用mysql数据库
2022/03/13 Golang