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复制文件代码实现
Dec 23 Python
跟老齐学Python之集合的关系
Sep 24 Python
Python实现获取网站PR及百度权重
Jan 21 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
python实现简单flappy bird
Dec 24 Python
python实现自动解数独小程序
Jan 21 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
Python基于Tkinter编写crc校验工具
May 06 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 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
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
php实现Session存储到Redis
2015/11/11 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
Python grpc超时机制代码示例
2020/09/14 Python
python3实现简单飞机大战
2020/11/29 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
行政专员工作职责
2013/12/22 职场文书
教学实验楼管理制度
2014/02/01 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
2014年测量员工作总结
2014/12/12 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python