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 3.x读写csv文件中数字的方法示例
Aug 29 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
python面向对象法实现图书管理系统
Apr 19 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
numpy中的meshgrid函数的使用
Jul 31 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
Python中私有属性的定义方式
Mar 05 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
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 遍历XP文件夹下所有文件
2008/11/27 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python实现自动解数独小程序
2019/01/21 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
linux面试题参考答案(7)
2014/07/24 面试题
资产经营总监岗位职责范文
2013/12/01 职场文书
小学教师师德感言
2014/02/10 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
新年寄语2016
2015/08/17 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
nginx 配置指令之location使用详解
2022/05/25 Servers