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 相关文章推荐
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python函数中的可变长参数详解
Sep 12 Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
python pygame 开发五子棋双人对弈
May 02 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 生成WML页面方法详解
2009/08/09 PHP
php的hash算法介绍
2014/02/13 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
javascript动态加载三
2012/08/22 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
js面向对象编程总结
2017/02/16 Javascript
几行js代码实现自适应
2017/02/24 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
学习Django知识点分享
2019/09/11 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
Django缓存Cache使用详解
2020/11/30 Python
小学运动会入场式解说词
2014/02/18 职场文书
婚礼主持结束词
2014/03/13 职场文书
校庆团日活动总结
2014/08/28 职场文书
会议室使用管理制度
2015/08/06 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
如何撰写创业策划书
2019/06/27 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
2022漫威和DC电影上映作品
2022/04/05 欧美动漫