类属性和实例属性区别
时间: 2024-02-27 10:52:27 浏览: 20
类属性是定义在类中的属性,多个实例共享同一个类属性,可以通过类名和实例名访问,一般用于保存类的共同信息。而实例属性是定义在实例中的属性,每个实例都有自己独立的实例属性,实例属性只能通过实例名访问,一般用于保存实例自己的信息。
例如,假设我们有一个Person类,其中包含了一个类属性country和两个实例属性name和age:
```python
class Person:
country = "China" # 类属性
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age # 实例属性
```
在这个例子中,country是类属性,所有Person实例对象都可以访问它,例如:
```python
print(Person.country) # China
p1 = Person("Tom", 18)
print(p1.country) # China
```
而name和age是实例属性,每个实例对象都有自己的name和age,例如:
```python
p1 = Person("Tom", 18)
p2 = Person("Jerry", 20)
print(p1.name, p1.age) # Tom 18
print(p2.name, p2.age) # Jerry 20
```
需要注意的是,如果在某个实例中修改了实例属性,那么只会对该实例生效,不会影响其他实例和类属性,例如:
```python
p1 = Person("Tom", 18)
p2 = Person("Jerry", 20)
p1.name = "Alice"
p1.age = 21
print(p1.name, p1.age) # Alice 21
print(p2.name, p2.age) # Jerry 20
print(p1.country) # China
```