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 相关文章推荐
10款最好的Web开发的 Python 框架
Mar 18 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python中max函数用于二维列表的实例
Apr 03 Python
python 列表降维的实例讲解
Jun 28 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
python如何基于redis实现ip代理池
Jan 17 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 Python
Python中Cookies导出某站用户数据的方法
May 17 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
javascript实现计算器功能
2020/03/30 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
token 机制和实现方式
2020/12/15 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
python使用mailbox打印电子邮件的方法
2015/04/30 Python
python opencv之SIFT算法示例
2018/02/24 Python
用python处理MS Word的实例讲解
2018/05/08 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
python实现人机五子棋
2020/03/25 Python
python中JWT用户认证的实现
2020/05/18 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
巴西网上药房:onofre
2016/11/21 全球购物
打印机墨盒:123Inkjets
2017/02/16 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
迟到检讨书500字
2014/02/05 职场文书
标准版离职证明书
2014/09/12 职场文书
职工培训工作总结
2015/08/10 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
Python中tqdm的使用和例子
2022/09/23 Python