Python中类的实例能否自定义变量?是否可被其他实例访问?
Python类实例的专属变量:创建与访问问题
当然可以给类的某个实例创建专属变量!而且这类变量默认不能被同属此类的其他实例直接访问,下面我给你详细解释并附上示例:
1. 如何给实例创建专属变量
在Python中,每个类的实例都是独立的对象,你可以直接通过实例名.变量名 = 值的方式给某个实例添加专属的实例变量,这类变量只属于该实例本身,和类或者其他实例没有直接关联。
比如你提供的代码基础上,我们可以这样做:
class A(): Var1 = 10 # 这是类变量,所有A的实例都会共享这个值 inst1 = A() inst1.Var2 = 20 # 给inst1创建专属的实例变量Var2 # 访问inst1的变量 print(inst1.Var1) # 输出:10(来自类变量) print(inst1.Var2) # 输出:20(inst1的专属变量)
2. 其他实例能否访问这个专属变量?
答案是不能直接访问,因为每个实例的变量都是存储在自己的__dict__属性字典里,其他实例的__dict__中并没有这个变量。比如我们创建另一个实例inst2:
inst2 = A() print(inst2.Var1) # 输出:10(共享类变量) # print(inst2.Var2) # 取消注释会报错:AttributeError: 'A' object has no attribute 'Var2'
如果非要访问inst1的Var2,你只能通过inst1这个实例对象去访问,比如print(inst1.Var2),但这并不是inst2自己拥有的变量,只是访问另一个实例的属性而已。
补充:类变量 vs 实例变量
- 类变量:定义在类内部、所有方法之外的变量(比如例子里的
Var1),属于类本身,所有实例都会共享它的值,修改类变量会影响所有实例。 - 实例变量:通过实例创建的变量(比如
inst1.Var2),属于单个实例,每个实例的实例变量都是独立的,修改不会影响其他实例。
内容的提问来源于stack exchange,提问作者pranshu
相关产品推荐
相关产品推荐

