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之重回函数
Oct 10 Python
python分割文件的常用方法
Nov 01 Python
从Python的源码来解析Python下的freeblock
May 11 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
Python脚本完成post接口测试的实例
Dec 17 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
python必学知识之文件操作(建议收藏)
May 30 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python实现数值积分方式
2019/11/20 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
求职信模板怎么做
2014/01/26 职场文书
房地产端午节活动方案
2014/08/24 职场文书
Python中异常处理用法
2021/11/27 Python