时间:2021-05-22
感觉这种理解有问题,举个例子来说。
class Dog(object): name = 'dog' def init(self): self.age = 18 d1 = Dog() d2 = Dog()这里有两个实例 d1,d2 吧。
d1.name # 输出 dogd2.name # 输出 dogd1.name = 'abc'd1.name # 输出 abcd2.name # 输出 dogDog.name # 输出 dog原因是 d1.name 输出 dog 不是因为这个实例共享了类属性,而是因为这个实例没有 dog 属性,所以 python 查找了类属性。但是一旦你修改了 d1.name 相当于给 d1 实例绑定了 name 属性之后,d1.name 就与类属性无关了。既然这样就谈不上实例之间共享类属性了,因为只要一赋值,就相当于绑定了属性,则上述 d1.name 的含义和 d2.name 的含义就不同了,它们的值也不同,很明显它们的数据没有共享。
但是要修改类属性,应该用
Dog.name = 'new name'而不应该是
dog1.name = 'new name'因为实例属性同名而覆盖类属性,的确是一个很容易忽视、出错的地方。
以上这篇浅谈python 中类属性共享的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
类属性和对象属性我们把定义在类中的属性称为类属性,该类的所有对象共享类属性,类属性具有继承性,可以为类动态地添加类属性。对象在创建完成后还可以为它添加额外的属性
Python-类属性,实例属性,类方法,静态方法,实例方法类属性和实例属性#coding:utf-8classStudent(object):name='Iam
首先我们来看一下属性的定义属性的定义:python中的属性其实是普通方法的衍生。操作类属性有三种方法:1.使用@property装饰器操作类属性。2.使用类或实
本文实例讲述了Python面向对象class类属性及子类用法。分享给大家供大家参考,具体如下:class类属性classFoo(object):x=1.5foo
本文实例讲述了python面向对象之类属性和类方法。分享给大家供大家参考,具体如下:目标类的结构类属性和实例属性类方法和静态方法01.类的结构1.1术语——实例