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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
基于Python os模块常用命令介绍
Nov 03 Python
Python SQLite3简介
Feb 22 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
python:接口间数据传递与调用方法
Dec 17 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
pycharm配置git(图文教程)
Aug 16 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP函数超时处理方法
2016/02/14 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
vuejs实现下拉框菜单选择
2020/10/23 Javascript
详解Python如何获取列表(List)的中位数
2016/08/12 Python
python去掉行尾的换行符方法
2017/01/04 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
婚宴邀请函
2015/01/30 职场文书
绵山导游词
2015/02/05 职场文书
党支部季度考核意见
2015/06/02 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
分享几个简单MySQL优化小妙招
2022/03/31 MySQL