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编程开发之日期操作实例分析
Nov 13 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
Apr 09 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
python制作企业邮箱的爆破脚本
Oct 05 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
通过Python把学姐照片做成拼图游戏
Feb 15 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 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
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
超级退弹代码
2008/07/07 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
vue+element实现批量删除功能的示例
2018/02/28 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[00:16]热血竞技场
2019/03/06 DOTA
Python中Class类用法实例分析
2015/11/12 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python如何将图片转换为字符图片
2020/08/19 Python
django ajax json的实例代码
2018/05/29 Python
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
幼儿园课题实施方案
2014/05/14 职场文书