1. 在类的内部直接声明变量:
class MyClass:
class_attribute = "I am a class attribute"
2. 在类的构造方法`__init__`中定义属性:
class MyClass:
def __init__(self):
self.instance_attribute = "I am an instance attribute"
3. 使用`@property`装饰器定义属性:
class MyClass:
def __init__(self):
self._attribute = None
@property
def attribute(self):
return self._attribute
@attribute.setter
def attribute(self, value):
self._attribute = value
4. 在类的方法中动态添加属性:
class MyClass:
def set_attr(self, attr_name, attr_value):
setattr(self, attr_name, attr_value)
5. 使用两个下划线前缀表示私有属性(虽然这仅仅是一个约定,Python并不会真的阻止访问):
class MyClass:
def __init__(self):
self.__private_attribute = "I am a private attribute"
类属性与实例属性不同,类属性是属于类本身的,所有实例共享同一个值,而实例属性是属于类实例的,每个实例拥有自己的副本。
需要注意的是,在Python中,单下划线前缀(如`_attribute`)通常用于表示属性是受保护的,而双下划线前缀(如`__attribute`)表示属性是私有的。然而,这些约定并不强制执行,访问私有属性仍然可能发生,只是不推荐这样做。