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用ConfigObj读写配置文件的实现代码
Mar 04 Python
Python中的filter()函数的用法
Apr 27 Python
Python六大开源框架对比
Oct 19 Python
Python冲顶大会 快来答题!
Jan 17 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
Python反射和内置方法重写操作详解
Aug 27 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
用python解压分析jar包实例
Jan 16 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
python 制作简单的音乐播放器
Nov 25 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
基于mysql的论坛(6)
2006/10/09 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
javascript中length属性的探索
2011/07/31 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
详解Django通用视图中的函数包装
2015/07/21 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
10款最好的Python开发编辑器
2019/07/03 Python
python实现飞机大战项目
2020/03/11 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
美国电视购物HSN官网:HSN
2016/09/07 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
最受欢迎的自我评价
2013/12/22 职场文书
单位提档介绍信
2014/01/17 职场文书
小学生新年寄语
2014/04/03 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js