首页 python基础教程 Python类属性的增删改查操作
pay pay

Python类属性的增删改查操作

日期: 2021年12月2日 03:14
栏目: python基础教程
阅读: 23
作者: python自学网

摘要: 类所封装的代码中也有自己的属性,而且这些属性也能被他实例化的对象直接使用。下面就通过一个类来讲解。

类所封装的代码中也有自己的属性,而且这些属性也能被他实例化的对象直接使用。下面就通过一个类来讲解。

class Infor:
    pass

msg = Infor()
msg.age = 19
msg.age = 5

类其实也是一个对象,那么给类增加属性和给对象增加属性就是同样的方法。

Infor.name = 'Tom'  # 给类增加属性
print(Infor.name)
print(Infor.__dict__)

通过对象访问类属性,但是这种访问不是很合理,可以把类属性直接写入到类中,如下:

print(msg.name)

class Ability:
    name = 'jerry'
    age = 22

print(Ability.name)  # 直接使用类名访问属性

per = Ability()
print(per.name)  # 使用对象访问类属性

使用对象查找属性的时候首先查找的是对象自己的属性,如果没有找到,再到类中查找。

per.age = 111  # 给对象增加一个和类属性同名的属性
print(per.age)  # 返回结果是111,属于对象属性,说明优先访问对象自己的属性,删除对象属性后又返回22

从上面的age返回结果发现类中的age和对象属性中的age其实不是同一个属性,也不是同一个变量,因为变量不可变。

print(id(Ability.age))
print(id(per.age))

从上面又得到一个观点,我们想修改类中的属性值,不能直接通过对象来修改。

per.age = 123  # 这是给对象属性重新赋值,如果对象没有属性则是在给对象添加属性,并没有修改类中的属性
Ability.age = 999  # 只有通过类名才能修改类中属性值

删除类属性的原理也是一样,只能通过类名.属性的方式操作。

del Ability.name
print(Ability.name)

返回结果:

AttributeError: type object 'Ability' has no attribute 'name'

 总结:类属性的增删改查操作只有查找是从对象开始一直查到类属性中,其他都需要通过类名来操作类属性。

目录
回顶部