时间:2021-05-22
前言
虽然各种编程语言之间大部分语法存在共通的地方,但是在一些细节的处理上还是千差万别
才接触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静态变量、实例变量与本地变量声明内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、静态变量与C语言一样,可以使用static说明自动变量。根据定义的位置不同,分为静态全局变量和静态局部变量。全局变量是指在所有花括号之外声明的变量,其作用域
本文实例讲述了Python面向对象程序设计类变量与成员变量、类方法与成员方法用法。分享给大家供大家参考,具体如下:类变量与成员变量在类中声明的变量我们称之为类变
本文实例讲述了JavaScript的变量声明与声明提前用法。分享给大家供大家参考,具体如下:JavaScript的变量声明JavaScript的变量声明语句无论
类的实例化顺序父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量(父类实例成员变量)、父类构造函数、子类非静态变量(子类实例成员变量)、
静态变量和成员变量的区别:A:所属不同静态变量:属于类,类变量成员变量:属于对象,对象变量,实例变量B:内存位置不同静态变量:方法区的静态区成员变量:堆内存C: