Python类属性与对象属性:访问、设置和删除

4 下载量 146 浏览量 更新于2024-08-29 收藏 71KB PDF 举报
"本文主要探讨了Python中类属性与对象属性的概念、访问方式以及它们之间的区别。类属性由所有类的实例共享,具有继承性,而对象属性仅属于特定对象,不具有继承性。在Python中,类属性和对象属性都可以动态地添加或删除。通过示例代码展示了如何使用dir()和vars()函数来查看类和对象的属性,并通过类A和类B的实例展示了类属性和对象属性的使用。" 在Python编程中,类属性和对象属性是面向对象设计的重要组成部分。类属性定义在类的内部,通常用来表示与类本身相关的数据,而不是特定实例的数据。例如,类A中的`name='orisun'`就是一个类属性,所有A的实例都能访问到这个属性。类属性可以通过类名直接访问,也可以通过实例访问,但通过实例访问时,Python会首先查找实例是否有对应的对象属性,如果没有才会查找类属性。 对象属性则是在类的实例化过程中创建的,比如在`__init__`方法中定义的`self.age=10`,这个`age`属性就是对象属性,它只属于创建它的实例,不同实例的`age`属性可以有不同的值。对象属性不具有继承性,即子类的实例不会自动继承父类的实例属性。 Python提供了多种访问、设置和删除类属性及对象属性的方法。`dir()`函数可以列出一个对象(包括类)的所有属性和方法,包括类属性和对象属性。而`vars()`函数则返回一个对象的`__dict__`属性,它是一个字典,存储了对象的所有对象属性。如果想要查看类的类属性,需要通过类名来调用`vars()`。 在给出的示例代码中,`A`类有类属性`name`,`B`类继承自`A`,并添加了类属性`city`和对象属性`tempurature`。通过创建`A`和`B`的实例`a`和`b`,并使用`dir()`和`vars()`函数,我们可以看到不同类型的属性如何体现在不同的对象上。 通过类的实例,我们可以动态地添加或删除对象属性。例如,`a.new_property = 'new_value'`会为`a`添加一个名为`new_property`的对象属性,而`del a.new_property`则可以删除这个属性。对于类属性,我们可以在类定义之外通过`类名.属性名 = 值`的方式添加,如`A.new_class_attr = 'new_value'`,同样,`del A.new_class_attr`可以删除类属性。 总结来说,Python的类属性和对象属性为编程提供了极大的灵活性。理解它们的区别和用法对于编写高效且易于维护的代码至关重要。类属性适用于表示所有实例共有的数据,而对象属性则用于存储每个实例特有的数据。在实际编程中,可以根据需求选择合适的属性类型。