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采用socket模拟TCP通讯的实现方法
Nov 19 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
解决Python传递中文参数的问题
Aug 04 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
python编程线性回归代码示例
Dec 07 Python
设置python3为默认python的方法
Oct 31 Python
python在回调函数中获取返回值的方法
Feb 22 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
利用python求积分的实例
Jul 03 Python
Django中自定义查询对象的具体使用
Oct 13 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
Python序列化与反序列化相关知识总结
Jun 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
PHP面向对象分析设计的经验原则
2008/09/20 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Python struct.unpack
2008/09/06 Python
python交互式图形编程实例(三)
2017/11/17 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Django 多环境配置详解
2019/05/14 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
string = null 和string = ''的区别
2013/04/28 面试题
大学校庆策划书
2014/01/31 职场文书
主题婚礼策划方案
2014/02/10 职场文书
空气环保标语
2014/06/12 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书