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 相关文章推荐
python中将阿拉伯数字转换成中文的实现代码
May 19 Python
python实现指定字符串补全空格的方法
Apr 30 Python
pycharm安装图文教程
May 02 Python
python写一个md5解密器示例
Feb 23 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
Flask中endpoint的理解(小结)
Dec 11 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
Django 构建模板form表单的两种方法
Jun 14 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 Python
python opencv通过4坐标剪裁图片
Jun 05 Python
Django框架模板用法详解
Jun 10 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
第八节 访问方式 [8]
2006/10/09 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
python基础练习之几个简单的游戏
2017/11/10 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
HTML5进度条特效
2014/12/18 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
英语文学专业学生的自我评价
2013/10/31 职场文书
2014年妇女工作总结
2014/12/06 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android