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实现strcmp函数功能示例
Mar 25 Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
python发送邮件脚本
May 22 Python
opencv python 2D直方图的示例代码
Jul 20 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
Python 随机按键模拟2小时
Dec 30 Python
python爬取抖音视频的实例分析
Jan 19 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
PHP静态成员变量
2017/02/14 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
express.js中间件说明详解
2019/03/19 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
Python3基础之list列表实例解析
2014/08/13 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
Python自定义线程类简单示例
2018/03/23 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
python中如何设置代码自动提示
2020/07/15 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
华为python面试题
2016/05/03 面试题
班级入场式解说词
2014/02/01 职场文书
出纳员的岗位职责
2014/02/22 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
使用Pytorch训练two-head网络的操作
2021/05/28 Python
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python