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中的异常处理
Apr 28 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
用matplotlib画等高线图详解
Dec 14 Python
Python类的继承和多态代码详解
Dec 27 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
python Tkinter版学生管理系统
Feb 20 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
解决Django中多条件查询的问题
Jul 18 Python
python实现字符串和数字拼接
Mar 02 Python
python asyncio 协程库的使用
Jan 21 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
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
分享10段PHP常用代码
2015/11/11 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
jQuery对表单的操作代码集合
2011/04/06 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python 生成图形验证码的方法示例
2018/11/11 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
基于keras中的回调函数用法说明
2020/06/17 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
Linux如何压缩可执行文件
2013/10/21 面试题
服装电子商务创业计划书
2014/01/30 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
办公用房租赁协议书
2014/11/29 职场文书
党员转正党支部意见
2015/06/02 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
在redisCluster中模糊获取key方式
2021/07/09 Redis
Apache自带的ab压力测试工具的实现
2022/07/23 Servers