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 27 Python
Python中的index()方法使用教程
May 18 Python
Python中%r和%s的详解及区别
Mar 16 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
python numpy 按行归一化的实例
Jan 21 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
python 数据库查询返回list或tuple实例
May 15 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
利用python进行文件操作
Dec 04 Python
Python移位密码、仿射变换解密实例代码
Jun 27 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 地址栏信息的获取代码
2009/01/07 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
PHP中的替代语法介绍
2015/01/09 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[00:16]热血竞技场
2019/03/06 DOTA
Python实现模拟时钟代码推荐
2015/11/08 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
Python交互环境下实现输入代码
2018/06/22 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
自荐信包含哪些内容
2013/10/30 职场文书
文明教师事迹材料
2014/01/16 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
承诺书样本
2014/08/30 职场文书
2016年国陪研修感言
2015/11/18 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技