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多线程编程简单介绍
Apr 13 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
Python中pymysql 模块的使用详解
Aug 12 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
Python基本知识点总结
Apr 07 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
13个PHP函数超实用
2015/10/21 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
进一步探究Python中的正则表达式
2015/04/28 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
管理专员自荐信
2014/01/26 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
525心理活动总结
2014/07/04 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
家访教师心得体会
2016/01/23 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL