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 字典dict使用介绍
Nov 30 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
Python如何调用JS文件中的函数
Aug 16 Python
keras多显卡训练方式
Jun 10 Python
浅析Python 字符编码与文件处理
Sep 24 Python
python 两种方法删除空文件夹
Sep 29 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP的全局错误处理详解
2016/04/25 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
js的写法基础分析
2011/01/17 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
冰淇淋店创业计划书范文
2013/12/27 职场文书
业务内勤岗位职责
2014/04/30 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
交通安全教育主题班会
2015/08/12 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
python画条形图的具体代码
2022/04/20 Python