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中变量交换的例子
Aug 25 Python
Python 递归函数详解及实例
Dec 27 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
基于Python获取城市近7天天气预报
Nov 26 Python
Python字符串的修改方法实例
Dec 19 Python
Python中join()函数多种操作代码实例
Jan 13 Python
python调用API接口实现登陆短信验证
May 10 Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
python collections模块的使用
Oct 16 Python
Python中全局变量和局部变量的理解与区别
Feb 07 Python
Python序列化与反序列化相关知识总结
Jun 08 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部分常见问题总结
2008/03/27 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Python的标准模块包json详解
2017/03/13 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
python实现多人聊天室
2020/03/31 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
建筑学专业自荐书
2014/07/09 职场文书
工厂标语大全
2014/10/06 职场文书
辞职信如何写
2015/02/27 职场文书
职工食堂管理制度
2015/08/06 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript