在 Python 3.x 中,属性是一种特殊的类成员,它定义了对象的状态和行为。属性通常用于存储对象的内部状态和数据,提供对其进行访问、修改和删除的接口。
Python 的属性可以分为两种类型:实例属性和类属性。
- 实例属性是属于实例对象的,每个实例都有自己的一套属性。实例属性的定义和访问通常发生在方法中,如下所示:
class MyClass:
def __init__(self, name, age):
self.name = name # 定义实例属性
self.age = age
def get_name(self):
return self.name # 访问实例属性
my_obj = MyClass("Alice", 18)
print(my_obj.get_name()) # 输出 "Alice"
- 类属性是属于类的,所有实例共享同一份属性值。类属性的定义和访问通常发生在类定义的顶层,如下所示:
class MyClass:
class_attr = 42 # 定义类属性
def __init__(self, name, age):
self.name = name
self.age = age
my_obj1 = MyClass("Alice", 18)
my_obj2 = MyClass("Bob", 20)
print(my_obj1.class_attr) # 输出 42
print(my_obj2.class_attr) # 输出 42
需要注意的是,当实例属性和类属性同名时,实例属性会覆盖掉类属性。如果想要访问类属性,可以使用类名或 self.__class__
来访问,如下所示:
class MyClass:
class_attr = 42
def __init__(self, name, age):
self.name = name
self.age = age
self.class_attr = 18 # 定义同名的实例属性
my_obj = MyClass("Alice", 18)
print(my_obj.class_attr) # 输出 18
print(MyClass.class_attr) # 输出 42
print(my_obj.__class__.class_attr) # 输出 42