类变量和成员变量
正文
类变量
在类里面定义,且不位于构造或者成员函数里面,同时没有" self. " 的前缀;或者在类外定义,用 类名.类变量名 来新增加类变量。两种使用方法: (1)类名.类变量名(如下的 Test.a) (2)类的实例对象.类变量名(如下的 T.a)
class Test:
a = 1 ### 类变量
def __init__(self):
self.member = 2
def indoor(self, people):
self.member = people
T = Test()
print(Test.a) ## 使用方法(1)
print(T.a) ## 使用方法(2)
>> 1
>> 1
作用范围
类变量可以通过 使用方法(1)进行全局的修改(如操作1所示)
类变量通过 使用方法(2)只能进行局部的修改(如操作2所示)
也就是说 刚开始Test.a 和T1.a 还有 T2.a 都是指向同一地址,Test.a的修改只是修改地址里的值,而没有修改地址,而直接修改实例化对象(如T1.a 或者 T2.a)的数值,会让其实例对象的值指向新的内存空间,并且不再受到类变量Test.a的影响
exp:
class Test:
a = 1
def __init__(self):
self.member = 2
def indoor(self, people):
self.member = people
T1 = Test()
T2 = Test()
print(T1.a)
print(T2.a)
print(Test.a)
print("############ 操作1 ###########")
Test.a = 1000
print(T1.a)
print(T2.a)
print(Test.a)
print("############ 操作2 ###########")
T1.a = 2000
print(T1.a)
print(T2.a)
print(Test.a)
输出:
1
1
1
############ 操作1 ###########
1000
1000
1000
############ 操作2 ###########
2000
1000
1000
class student():
age = 0
name = 'stu'
# age,name是类变量
def __init__(self,age,name):
self.age = age
self.name = name
# 访问实例变量(用self.age self.name)
student1 = student(18,'hello')
print(student1.name)
# 打印实例变量,输出hello
print(student.name)
# 打印类变量,输出stu
总结:类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象
参考资料
分类:
【03】python编程
标签:
【python编程】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
2022-06-03 【C++编程】weak_ptr
2022-06-03 【C++编程】std::shared_ptr
2022-06-03 【shell编程】shell字符串截取、替换、删除
2022-06-03 【shell编程】函数返回值
2018-06-03 【学习工具】vmware克隆独立虚拟机及初始配置
2018-06-03 【C++ 继承】重载、重写、隐藏的区别
2018-06-03 【rpm】创建子包