前言

虽然各种编程语言之间大部分语法存在共通的地方,但是在一些细节的处理上还是千差万别

才接触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“静态”变量、实例变量与本地变量的声明示例相关推荐

  1. python中函数的调用_python函数的调用、函数中变量的使用之详解

    '''函数的工作原理:函数内部的变量都是临时的, 当你的函数返回以后,返回值可以被赋予一个变量. 这里是创建了一个新变量,用来存放函数的返回值. ''' def secret_formula(star ...

  2. python私有成员与公有成员_Python访问限制私有还是公有的介绍(附示例)

    本篇文章给大家带来的内容是关于Python访问限制私有还是公有的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.知识点 在一个模块中,我们可能会定义很多函数和变量. ...

  3. java 线程变量put_Java线程(篇外篇):线程本地变量ThreadLocal

    首先说明ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递,这样处理后,能够优雅的解决一些实际问题,比如hibernate中的OpenSessi ...

  4. python函数的封装调用_Python封装一个函数来打印到变量

    如果我有一个包含大量打印语句的函数: 即. def funA(): print "Hi" print "There" print "Friend&qu ...

  5. python中系列的含义_python中四种组合数据类型的含义、声明、增删改查,遍历

    一.列表 列表:list 可以存储多个有顺序的可以重复的数据的类型 其他语言:数据:python中~提供的是列表[不说数组] 列表:操作数据:增加.删除.修改.查询 [CRUD] append/ins ...

  6. python输入多组测试数据_python ddt数据驱动实例代码分享

    python ddt数据驱动最简实例 在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写 ...

  7. python登录网页账号密码_Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    1. 实例描述 通过爬虫获取网页的信息时,有时需要登录网页后才可以获取网页中的可用数据,例如获取 GitHub 网页中的注册号码时,就需要先登录账号才能在登录后的页面中看到该信息,如下图所示.那么该如 ...

  8. python温度转换代码分析_Python温度转换实例分析

    本文主要研究的是Python语言实现温度转换的相关实例,具体如下. 代码如下: #TempConvert.py val=input("请输入带有温度表示符号的温度值(例如:32c)" ...

  9. 根据变量推断变量类型_11位专家参与其中:本地变量类型推断是Java 10中最大的新功能

    根据变量推断变量类型 " Java 10不仅是对Java 9的简单稳定性和性能修复," 尽管Java 9是六个月前才发布的( 仅! ),这意味着对Java 10的期望可能不是很高, ...

最新文章

  1. 连信的protobuf数据格式
  2. 阿里云安全肖力:安全基础建设是企业数字化转型的基石
  3. MYSQL 创建用户1290错误_rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290
  4. 安全框架 - Shiro与springMVC整合的注解以及JSP标签
  5. easyui框架前后端交互_Vue+ElementUI+.netcore前后端分离框架开发项目实战
  6. 安卓没删干净导致报错
  7. queued frame 造成图形性能卡顿
  8. JavaScript中执行环境和栈
  9. jQuery 学习笔记之十 (jQuery ajax )
  10. 数据结构07之哈希表
  11. html中复选框只能选一个,HTML选择三个不同的复选框并显示它们
  12. photoshop保存里没有html,PS中为什么没有存储为web格式?
  13. Spring boot 更改启动LOGO,佛祖保佑,永无BUG或神兽保佑
  14. 软考-高项-论文-信息系统项目的质量管理
  15. 在Android上修改读取IMEI码的方法
  16. tomcat localhost log 和 tomcat catalina log分别是什么日志
  17. 【李佳辉_周报_2022.9.11】
  18. 函数的 柯里化和反柯里化
  19. sqlite主键与唯一约束
  20. SQL学习笔记(三): 视图与一些复杂查询(虽复杂但常用)

热门文章

  1. 消费升级新节点:大屏电视为何成热潮?
  2. LeetCode_101
  3. python格式化字符串的三种方法(%,format,f-string)
  4. 鸿蒙分期怎么回事,这例乳腺癌的病理分期到底是啥?太纠结了!
  5. linux 通配符 正则表达式 区别,linux 正则表达式和通配符
  6. 趣谈 iOS Universal Link
  7. Mysql远程访问限制ip
  8. java frame类关闭窗口_JFrame Frame 窗口关闭
  9. idea撤销本地git提交
  10. 台湾精锐Apex行星减速机安装步骤及注意事项