python“静态”变量、实例变量与本地变量的声明示例


Posted in Python onNovember 13, 2020

前言

虽然各种编程语言之间大部分语法存在共通的地方,但是在一些细节的处理上还是千差万别

才接触Python不久(之前是学Java的),实在想吐槽一下语言之间编码格式上的不统一问题,比如Java用分号分隔代码块,Python用空格,这无形之中增加了编码人员的学习成本

作为初学人员,还是老老实实记录一下学习过程中的坑:)

1. “静态”变量的声明

这里的静态变量是借用Java中静态变量的概念(不知道Python中的具体概念是什么),指既可以通过类名直接进行访问,也可以通过类的实例进行访问的变量。这种变量的声明很简单,直接在类代码块中设置变量即可,不需要任何关键字

Java中这样声明的变量是实例变量,只能通过对象实例进行访问

class Test:
 # 这是一个“静态”变量
 className = "Test"

2. 实例变量的声明

实例变量是指必须通过类的实例去访问的变量

实例变量的声明比较神奇,在任意的方法中,在变量名称前面加上“self.”,该变量就变成了实例变量。这样这个变量在其他的方法中也同样可以使用了(个人感觉有点奇葩啊有木有)

所以实例变量的声明有一点特别重要,如果该实例变量会做跨方法的使用,那么实例变量声明的方法一定要在实例变量使用的方法调用之前执行

def __init__(self):
  # 这是一个实例变量
  self.hello = Hello()

3. 本地变量的声明

本地变量是仅在类的方法中使用的变量

声明方法也很简单,直接在类的方法中定义变量即可

def who(self):
  # 这是一个本地变量
  name = "Cain"
  return name

最后是一个完整的使用示例:

一个hello类:

class Hello:
 def who(self):
  # 这是一个本地变量
  name = "Cain"
  return name

一个Test类(其中会用到hello类):

# -*- coding:UTF-8 -*-
from hello import Hello
 
 
class Test:
 # 这是一个“静态”变量
 className = "Test"
 
 def __init__(self):
  # 这是一个实例变量
  self.hello = Hello()
 
 def sayName(self):
  # 类的方法中访问实例变量
  print("My name is " + self.hello.who())
 
 
if __name__ == "__main__":
 test = Test()
 test.sayName()
 
 test1 = Test()
 # 通过类名直接访问静态变量
 print(Test.className)
 # 通过实例名访问静态变量
 print(test.className)
 # 通过实例名访问实例变量
 print(test.hello.who())
 # 通过类名直接访问实例变量会报错!!!
 # print(Test.hello.who())

总结

到此这篇关于python“静态”变量、实例变量与本地变量声明的文章就介绍到这了,更多相关python静态变量、实例变量与本地变量声明内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
python僵尸进程产生的原因
Jul 21 Python
Python中修改字符串的四种方法
Nov 02 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
Python和Bash结合在一起的方法
Nov 13 #Python
python小技巧——将变量保存在本地及读取
Nov 13 #Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 #Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 #Python
Python图像识别+KNN求解数独的实现
Nov 13 #Python
Django正则URL匹配实现流程解析
Nov 13 #Python
Django框架请求生命周期实现原理
Nov 13 #Python
You might like
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
Python 支付整合开发包的实现
2019/01/23 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python解包用法详解
2021/02/17 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
初中政治教学反思
2014/01/17 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
保密工作承诺书
2014/08/29 职场文书
学位证书委托书
2014/09/30 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript
JS封装cavans多种滤镜组件
2022/02/15 Javascript