python基础之类属性和实例属性

1. 类属性和实例属性的概念

在Python中,类属性和实例属性都是用来描述一个类的特征或者状态的变量,但它们之间有一定的区别。类属性是相对于类而言的,一旦定义便可以直接使用,它是所有该类对象共享的,而实例属性则是相对于对象而言的,每个对象都有自己的实例属性。举个栗子,当我们用Python定义一个人类时,人类的共同属性可以定义为类属性,例如人类都有两只眼睛、一张嘴巴,而个人的姓名、年龄、身高等属性则可以定义为实例属性,因为这些属性是人类类的每一个对象所拥有的。

class Human:

# 类属性

eyes = 2

mouth = 1

# 实例属性

def __init__(self, name, age, height):

self.name = name

self.age = age

self.height = height

def say_hello(self):

print(f"Hello, I am {self.name}")

2. 访问类属性和实例属性

2.1. 访问类属性

类属性是属于类的,因此可以通过类名直接访问。

class Human:

# 类属性

eyes = 2

print(Human.eyes) # 2

2.2. 访问实例属性

实例属性是属于类的每个实例的,因此需要先创建一个实例对象,然后通过该实例对象访问其属性。

class Human:

# 实例属性

def __init__(self, name, age):

self.name = name

self.age = age

h = Human('Tom', 25)

print(h.name) # Tom

3. 修改类属性和实例属性

3.1. 修改类属性

对于类属性的修改,只需要直接使用类名来进行修改即可。

class Human:

# 类属性

eyes = 2

Human.eyes = 3

print(Human.eyes) # 3

3.2. 修改实例属性

对于实例属性的修改,需要先创建实例对象,然后通过该实例对象来进行修改。

class Human:

# 实例属性

def __init__(self, name, age):

self.name = name

self.age = age

h = Human('Tom', 25)

h.age = 30

print(h.age) # 30

4. 实例属性和类属性的优先级

当实例属性和类属性同名时,实例属性优先级高于类属性。

class Human:

# 类属性

eyes = 2

# 实例属性

def __init__(self, name, age, eyes):

self.name = name

self.age = age

self.eyes = eyes

h = Human('Tom', 25, 3)

print(h.eyes) # 3

5. 总结

本文介绍了Python中的类属性和实例属性,类属性和实例属性都是用来描述一个类的特征或者状态的变量。类属性是相对于类而言的,一旦定义便可以直接使用,而实例属性则是相对于对象而言的,每个对象都有自己的实例属性。对于访问和修改属性,类属性可以直接使用类名来访问和修改,而实例属性需要先创建实例对象然后通过该实例对象访问和修改。当实例属性和类属性同名时,实例属性优先级高于类属性。

后端开发标签