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利用elaphe制作二维条形码实现代码
May 25 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
python Plotly绘图工具的简单使用
Mar 03 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
python求解汉诺塔游戏
Jul 09 Python
详解anaconda安装步骤
Nov 23 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
js中开关变量使用实例
2017/02/24 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
python获取糗百图片代码实例
2013/12/18 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python unichr函数知识点总结
2020/12/16 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
学校七一活动方案
2014/01/19 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
Python函数中apply、map、applymap的区别
2021/11/27 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
JS setTimeout与setInterval的区别
2022/04/20 Javascript
JS实现简单的九宫格抽奖
2022/06/28 Javascript