类变量和成员变量

正文

类变量

在类里面定义,且不位于构造或者成员函数里面,同时没有" 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

 

总结:类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象

参考资料

1. Python中的类变量和成员变量

posted @   苏格拉底的落泪  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有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】创建子包
点击右上角即可分享
微信分享提示