-
2020-07-26 08:49:37
python 类中静态变量
Python类/静态变量 (Python Class / Static Variables)
Class or Static variables are class-related variables that are shared among all objects but the instance or non-static variable is unique for each object. In Python, there is no need for the keyword static to make a class variable but the static keyword is used to make a class or static variables in other programming languages like C++, C, Java, etc. The variable defined on the class level that is declared inside the class but outside any method in Python is static.
类或静态变量是在所有对象之间共享的与类相关的变量,但是实例或非静态变量对于每个对象都是唯一的。 在Python中,不需要使用关键字static来创建类变量,而是使用static关键字来创建类或其他编程语言(例如C ++,C,Java等)中的静态变量。在类级别定义的变量在类内部声明,但在Python中的任何方法外部都是静态的。
Let's look at an example for a better understanding of the static variable that returns some details about the intern of "includehelp" in Python.
让我们看一个示例,以更好地理解静态变量,该变量返回有关Python中“ includehelp”的内部实习生的一些详细信息。
Example for the class or static variable
类或静态变量的示例
# class definition class intern: site_name='Includehelp' field='Technical content writer' def __init__(self,name,programming_language): self.name=name self.programming_language=programming_language # object of the intern class x = intern('Bipin Kumar','Python') # printing the variables values print('Site name: ',x.site_name) print('Field of interest: ',x.field) print('Name of intern: ',x.name) print('Language: ',x.programming_language)
Output
输出量
Site name: Includehelp Field of interest: Technical content writer Name of intern: Bipin Kumar Language: Python
Explanation:
说明:
In the above example, site_name and field is a class or static variable which is declared inside the class "intern" but outside of the __init__ method and name and programming_language are instance variables. Here, x is the object of the class "intern" which has two arguments, one is the name of an intern and another one is the programming language.
在上面的示例中, site_name和field是一个类或静态变量 ,在类“ intern”内声明,但在__init__方法之外,并且name和programming_language是实例变量。 在此, x是“ intern”类的对象,该类具有两个参数,一个是实习生的名称,另一个是编程语言。
翻译自: https://www.includehelp.com/python/class-or-static-variables.aspx
python 类中静态变量
更多相关内容 -
Python类变量和实例变量区别
2019-07-25 19:01:41类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类...类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类变量来更新类变量
实例变量: 定义在方法里面的变量,一般在__init__里面,只能通过对象名引用,实例变量的增加、更新形式,形如self.a = 55
实例变量(静态属性)【实例名.实例变量名】1、实例变量是构造函数下的变量带self.变量
2、实例变量为每个实例本身独有,不可相互调用、新增、修改、删除,不可被类调用、新增、修改、删除
3、可以访问类变量
4、如果同时有类变量和实例变量,程序执行时,先访问实例变量,实例变量存在,会使用实例变量,实例变量不存在,会使用类变量
5、实例改类变量,不可修改,实际是在实例内存里创建了实例变量
6、新增、修改、删除实例变量n,不会影响到类变量n
7、a实例不能调用b实例的变量
8、实例变量可修改、新增、删除
类变量【类名.类变量名】
1、类变量在class内,但不在class的方法内,存在类的内存里
2、类变量是该类所有实例共享的变量,但是实例对象只能访问,不可修改,每个实例对象去访问同一个类变量都将得到相同结果【实例名.类变量名】
3、新增、修改、删除类变量n,不会影响到实例变量n
4、类无权访问实例名
5、类变量可修改、新增、删除
class Test(object): name='类的姓名' #类变量 address='类的地址' def __init__(self,name,age,sex): self.name=name #实例变量 self.age=age self.sex=sex def test1(self): print(self.name,Test.address) def test2(self): pass Test1=Test('test1实例的姓名',22,'男') Test2=Test('test2实例的姓名',33,'女') print(Test1.name,Test1.address) print(Test2.name,Test2.address) print(Test.name) print(Test.age) #实验证明 #1、实例变量为每个实例独有,不可相互调用、新增、修改、删除,不可被类调用、新增、修改、删除 #2、如果同时有类变量和实例变量,程序执行时,先访问实例变量,实例变量存在,会使用实例变量,实例变量不存在,会使用类变量 #3、类无法访问实例变量 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py test1实例的姓名 类的地址 Traceback (most recent call last): test2实例的姓名 类的地址 File "C:/Users/wangli/PycharmProjects/Test/Test/test.py", line 98, in <module> 类的姓名 print(Test.age) AttributeError: type object 'Test' has no attribute 'age' Process finished with exit code 1
class Test(object): name='类的姓名' #类变量 address='类的地址' def __init__(self,name,age): self.name=name #实例变量 self.age=age def test1(self): print(self.name,Test.address) def test2(self): pass Test1=Test('test1实例的姓名',22) print('新增test1实例变量address为:test1实例的地址') Test1.address='test1实例的地址' #新增实例变量 print('新增后test1实例变量address:',Test1.address) print('新增后类变量address:',Test.address,'\n') print('修改前test1实例变量age:',Test1.age) print('修改test1实例变量age22为11') Test1.age=11 print('修改后test1实例变量age:',Test1.age,'\n') print('新增类变量age为:30') Test.age=30 #新增类变量 print('新增后test1实例变量age:',Test1.age) print('新增后类变量age:',Test.age,'\n') print('修改前类变量address:',Test.address) print('修改类变量address类的地址为上海市') Test.address='上海市' print('修改后类变量address:',Test.address,'\n') #实验证明 #1、实例变量可修改、新增、删除 #2、类变量可修改、新增、删除 #3、新增、修改、删除实例变量n,不会影响到类变量n #4、新增、修改、删除类变量n,不会影响到实例变量n "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py 新增test1实例变量address为:test1实例的地址 新增后test1实例变量address: test1实例的地址 新增后类变量address: 类的地址 修改前test1实例变量age: 22 修改test1实例变量age22为11 修改后test1实例变量age: 11 新增类变量age为:30 新增后test1实例变量age: 11 新增后类变量age: 30 修改前类变量address: 类的地址 修改类变量address类的地址为上海市 修改后类变量address: 上海市 Process finished with exit code 0
-
Python类变量、实例(成员)变量和局部变量
2020-04-05 13:41:141.类变量 下面介绍类变量的两种定义方式、两种读取方式、在类里面的调用方式 定义 1.类里定义的,与构造函数、普通函数是一个级别缩进的。(下面例子里的num) 2.在类外定义的,直接用类名.变量名新增类变量。...1.类变量
下面介绍类变量的两种定义方式、两种读取方式、在类里面的调用方式
定义
1.类里定义的,与构造函数、普通函数是一个级别缩进的。(下面例子里的num)
2.在类外定义的,直接用类名.变量名新增类变量。(下面例子里的myvar)
读取
1.直接用类名的属性 获取:类名.类变量 (下面例子里的Member.num和Member.myvar)
2.先实例化类,实例化对象的属性 获取 :实例对象.类变量 (下面例子里的M.num和M.myvar)
调用
1. 在类里面调用:类名.类变量,不能直接用类变量,即应为Member.num而不是num
# -*- coding: utf-8 -*- class Member(): num=2 #类变量,可以直接用类调用,或用实例对象调用 def __init__(self,x,y): self.x=x #实例变量(成员变量),需要它是在类的构造函数内以self.开头来定义的 self.y=y def add(self): total=2 #局部变量 self.vara=3 # 虽是以self.给出,但并没有在构造函数中进行初始化 self.varb=4 fina=(self.x+self.y)*total return fina def fuc(self,a,b): self.varc=a #成员变量,他们在成员函数fuc()中定义 self.vard=b self.x+=2 self.y+=2 self.vara+=3 self.varb+=Member.num Member.myvar = 'huhuh' print(Member.num,Member.myvar) M=Member(1,2) print(M.num,M.myvar)
2.实例(成员)变量
(1)构造函数里的成员变量:
定义:在__init__(self,成员变量)
读取:只能实例对象.成员变量,不能类名.成员变量,即只能M.x不能Member.x
调用:构造函数的成员变量,顾名思义:在类实例化的时候,就需要给该变量赋值。类里的普通函数可直接调用该变量,方式为:self.成员变量,
作用范围:类里面的全局变量,其值可以被其他函数修改
(2)普通函数里的成员变量
定义:在类里的普通函数def xxx(self,成员变量)
读取:只能实例对象.成员变量,不能类名.成员变量,即只能M.vara不能Member.vara
调用:方式为self.成员变量,只有在类实例化后调用该普通函数,此时,该成员变量才会生,看下面的例子:必须先调用add函数后,fuc函数里的self.vara和self.varb才会正常执行,不报错。
作用范围:类里面的全局变量,其值可以被其他函数修改
3.局部变量
局部变量相对就简单很多了,跟不在类里面的def函数的局部变量是一样的。
作用范围:该函数内部
总结:成员函数
1.不同点
(1)构造函数里的成员变量,在类实例化之后,就可以使用
(2)在类里普通函数里的 成员变量,只能先调用该函数,才能使用该成员变量。
2.相同点:
(1)在类里,都是全局的
-
Python类变量与实例变量学习笔记
2020-06-19 16:51:39class A: # aa为类变量 aa = 1 # xy为实例变量 def __init__(self, x, y): ... # 这里面xy就是实例变量,aa为类变量,a.aa会优先查找对象的变量,找不到则向上查询类变量 print(a.aa, a.x, a.y)class A: # aa为类变量 aa = 1 # xy为实例变量 def __init__(self, x, y): self.x = x self.y = y if __name__ == '__main__': # a是实例A是一个类 a = A(2, 4) # 这里面xy就是实例变量,aa为类变量,a.aa会优先查找对象的变量,找不到则向上查询类变量 print(a.aa, a.x, a.y) print(A.aa) A.aa = 11 print(a.aa) a.aa = 100 print(a.aa) print(A.aa)
联系与区别
联系
Python类变量被赋值
(1)类的设计里,
class里def外,通过变量名能被赋值
def里通过类对象即类名字的点运算变量名可被赋值
(2)程序里
通过类对象(类名字)的点运算类名字也可被赋值
Python实例对象变量被赋值
(1)类的设计时
def里通过self点运算变量名能被赋值,不一定非在init里,其他已被调用的方法函数里也行
(2)程序里
通过实例对象的点运算变量名可被赋值区别
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象
-
python中类变量和实例变量详解
2020-05-23 16:23:30python中类变量和实例变量详解 在了解类变量和实例变量之前,首先要知道类变量和实例变量的定义。 类变量:可在类的所有实例之间共享的值,就是指不是单独分配给每个实例,实例可以调用类变量。 实例变量:实例化... -
python 类中的变量、方法
2020-12-15 15:11:29python 类中的变量分为类变量,实例变量,self # coding:utf-8 class A(object): date = '20201215' # 类变量 def __init__(self): self.name = 'Stephen' # 实例变量 def __str__(self): return self.... -
python 类变量和成员变量详解
2018-12-19 09:36:38https://blog.csdn.net/qq_40860784/article/details/78992714 -
python中的类变量
2018-04-24 17:44:35python中的类变量最近我参加了一次面试,面试官要求用python实现某个api,一部分代码如下class Service(object): data = [] def __init__(self, other_data): self.other_data = other_data 面试官说:“ data =... -
第7.12节 可共享的Python类变量
2019-06-15 19:33:32第7.12节 可共享的Python类变量 一、 引言 在上节已经引入介绍了类变量和实例变量,类体中定义的变量为类变量,默认属于类本身,实例变量是实例方法中定义的self对象的变量,对于每个实例都是独有数据,而类变量是... -
Python类定义字类变量与实例变量
2018-01-19 11:02:01学过JAVA或C++等语言的程序员...Python类中定义的变量分为类变量和实例变量(也叫成员变量、对象变量),类变量直接定义在类里面(不在函数里面),前面不会有一个self修饰;相反,实例变量大都定义在实例函数里面,通 -
Python类变量与成员变量
2016-12-18 23:19:16python 的类中,主要会使用的两种变量:类变量与成员变量。类变量是类所有实例化对象共有的,而成员变量是每个实例化对象自身特有的,下面通过两个小程序来说明一下。 -
python ——静态变量
2022-01-27 20:57:48Python中,静态成员变量称为类变量,非静态成员变量称为实例变量 class A: ## 静态变量 a = 12 def __init__(self, a): ##成员变量 self.a = a print(A.a) # 12 print(A(0).a) # 0 静态变量是通过类名.... -
python3:类变量和实例变量的区别
2018-10-19 13:48:36类变量又叫全局变量,是属于类的特性,实例先找实例化变量,然后再去找类变量. 但是 实例变量只是属于 实例化的变量, 但是 类变量 也可以用实例去调用. 如果类变量有多重继承关系, 就需要按照指定的路线进行查找. ... -
python的类变量和成员变量
2018-08-15 11:24:07python中,类本身拥有自己的类变量(保存在内存),当对象第一次调用类变量时,会将当前类变量拷贝一份给这个对象,当前类变量的值是多少,这个对象拷贝得到的类变量的值就是多少;而且,通过对象来修改类变量,并不... -
python类变量实例化后修改
2015-11-14 10:03:42import random class artell(): def _init_(self,hp,wpn): self.hp = 10 .............. robot = artell() robot.hp = robot.hp -1 (类中变量初始化,实例化后怎么修改) -
Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数
2018-08-09 18:50:54原文地址:... Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数 #coding:utf-8 class class_name(object): class_var = 'I am a class variable'... -
Python 实例变量、类变量、静态变量 (十九)
2015-10-08 18:32:52实例变量 实例变量则是以为self.开头,必须在实例化该类后使用 class Test(object): def __init__(self): self.a = "Hello world!... #在内部Test.a是不能访问类变量的 print self.a A = Test() A -
python类共享变量详解
2018-08-27 11:40:43python类共享变量,是不需要实例化就可以调用的, 比如类A有一个XXX的类共享变量, 直接A.xxx就可以调用 第一步:b在实例化的时候类A中没有共享变量xxx,这个时候实例b是没有这个变量 第二步... -
Python类或方法中的变量什么时候加self,及self.变量调用方法
2020-06-05 11:25:16若需要再次调用,则加self,这样就相当于在类内的"全局变量 二.若需要了,则注意其使用方法 Eg1: 变量有self情况如何调用 >>> class MM(object): def mm(self): self.one = 'hello' // 开始调用 >>... -
python中类的私有变量可以修改吗
2020-03-13 13:43:16在python类中,以__开头的变量是私有变量,以_开头的变量是受保护的变量,不需要用private或者ptotect声明,这一点与C++是不一样的。 在python中,私有变量是可以修改的,来看下面几个例子。 总结一下: 1、... -
Python 类属性变量和全局变量
2016-12-25 18:05:16# 使用global 可以访问到全局变量 num += 10 print 'gloal num:' ,num ClassName.num += 1 print 'ClassName.num:' ,ClassName.num def func (self) : print 'ClassName.num:' ,ClassName.... -
python中的类变量和对象变量,以及传值传引用的探究
2019-06-27 22:51:201.1 可变变量作为类变量:对于列表、字典、自定义类这些可变变量,如果将其作为类变量,则是传引用。即所有对象的类变量公用一个内存地址。 1.2不可变变量作为类变量:对于INT,STRING这种不可变变量,如果将其作为... -
python公共变量_Python中的公共变量
2020-07-29 02:10:59python公共变量By default all numbers, methods, variables of the class are public in the Python programming language; we can access them outside of the class using the object name. 默认情况下,该类的... -
python中变量的生命周期
2018-04-16 21:58:28欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~ ... -
python-类及类内变量作用域
2017-03-17 15:53:23python-类内变量作用域 -
如何配置python环境变量,如何配置python环境变量mac
2020-12-24 03:07:40如何配置python环境变量,如何配置python环境变量mac,如何设置Python环境变量大家好,我是Yivies.相信很多python的初学者们在进行一顿下一步下一步的安装之后,在windows command命令行输入python的时候会出现这样的...