python 类变量(属性)和实例变量(属性

本文聚焦Python中类变量和实例变量。类变量在类体中定义,在所有类的实例间共享,只有类可修改;实例变量在构造函数中定义,每个实例对象有自己的实例变量,由实例对象修改。还提醒使用时可能给对象添加新属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DAY 4. 类变量(属性)和实例变量(属性)

  • 类变量:在所有类的实例之间都可以共享的变量,类变量在所有对象间只保留一份
    • 在类体中定义
    • 类的所有实例对象都可以访问类变量
    • 类变量只能由类修改,实例对象只有读权限
    • 使用对象名.类变量名 = new value不是在使用对象修改类属性,而是给对象添加了一个新属性
class Demo:
    # 类变量
    classVar = 0
    def __init__(self):
        self.instanceVar = 1

if __name__ == '__main__':
    demo1 = Demo()
    demo2 = Demo()
    # 类的所有实例对象都可以访问类变量
    print(demo1.classVar)  # 0
    print(demo2.classVar)  # 0
    # 由类修改类变量
    Demo.classVar = 2
    print(demo1.classVar)  # 2
    print(demo2.classVar)  # 2
    # 注意,这样不是在修改类变量,而是给实例对象添加了一个属性
    demo1.classVar = 2
    print(demo1.classVar)  # 2
  • 实例变量:实例化对象时,每个对象都会有自己的实例变量,各实例变量之间不影响
    • 在构造函数中定义
    • 实例变量由实例对象修改,类修改实例变量没意义
    • 每个实例对象有一份实例变量
class Demo:
    # 类变量
    classVar = 0
    def __init__(self):
        # 实例变量
        self.instanceVar = 1

if __name__ == '__main__':
    print(demo1.instanceVar)  # 1
    print(demo2.instanceVar)  # 1
    # 各实例对象间的实例变量互相不影响
    demo1.instanceVar = 2
    print(demo1.instanceVar)  # 2
    print(demo2.instanceVar)  # 1
    # 用类修改实例变量没意义
    Demo.instanceVar = 2
    print(demo1.instanceVar)  # 2
    print(demo2.instanceVar)  # 1

4.1 总结

变量(属性)定义读取修改内存
类变量在类体中定义className.classVarobjectName.classVarclassName.classVar = new value只保留一份
实例变量在构造函数中定义objectName.instanceVarobjectName.instanceVar = new value每个实例对象保存一份,各对象间互不影响

**注意:**使用objectName.classVar = new value是给对象添加了一个新属性

参考文章:

GitHub 关于python的面试题

python(类和对象之类属性和类变量)

图解Python 【第五篇】:面向对象-类-初级基础篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Junebao

如果你碰巧财力雄厚的话...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值