python基础-类变量和实例变量

本文深入探讨了类变量和实例变量的区别与联系。解析了它们的定义位置、引用方式及更新规则,强调了类变量的共享特性及更新须通过类名进行的原则。

类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类变量来更新类变量

实例变量: 定义在方法里面的变量,一般在__init__里面,只能通过对象名引用,实例变量的增加、更新形式,形如self.a = 55 

 

 

### Python变量实例变量的区别 #### 定义位置差异 变量是在的定义内部,但在任何方法之外定义的变量。例如,在`PLanguage`中,`name``add`都是变量[^1]。 ```python class PLanguage: # 变量 name = "Python" add = "https://www.cnblogs.com/qingchengzi/p/18055134" def say(self, content): print(content) ``` 而实例变量则是在的方法(通常是`__init__`初始化方法)中通过`self`关键字定义的变量。这意味着每次创建新对象时都会为这些变量分配新的内存空间[^3]。 ```python class Dog: kind = 'canine' # 变量 def __init__(self, name): self.name = name # 实例变量 ``` #### 访问优先级不同 当同时存在同名的变量实例变量时,程序会优先查找并使用该名称对应的实例变量;只有在找不到相应的实例变量的情况下才会去访问级别的变量[^2]。 假设有一个名为`Dog`的: ```python dog_a = Dog('阿旺') dog_b = Dog('查理') print(dog_a.kind) # 输出 canine (来自变量) print(dog_b.kind) # 输出 canine (来自变量) # 修改其中一个对象的行为不会影响其他对象或原始本身 dog_a.kind = '哈奇士' print(dog_a.kind) # 输出 哈奇士 (来自修改后的实例变量) print(dog_b.kind) # 输出 canine (仍然来自未改变的变量) ``` 这种机制允许开发者灵活控制数据共享的方式——既可以在整个别范围内保持某些特性的一致性,也可以让每个具体实体拥有独立的状态信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值