{site_name}

{site_name}

🌜 搜索

Python自定义属性访问指的是在类中通过特殊方法来控制对类属性的访问和操作

Python 𝄐 0
python设置属性,python属性访问顺序,python自定义类属性和方法,python给属性指定默认值,python中自定义数据类型,python自定义数据操作
Python自定义属性访问指的是在类中通过特殊方法来控制对类属性的访问和操作。这些特殊方法包括__getattr__()、__setattr__()、__delattr__()等。

其中,__getattr__()方法用于获取不存在的属性时触发,__setattr__()方法用于给属性赋值时触发,__delattr__()方法用于删除属性时触发。

以下是一个简单的例子,演示了如何通过自定义属性访问来限制对属性的访问和操作:

python
class Student:
def __init__(self, name, age):
self.name = name
self.age = age

def __setattr__(self, name, value):
if name == 'age' and value < 0:
raise ValueError('Age must be positive')
super().__setattr__(name, value)

def __getattr__(self, name):
if name == 'score':
return 90
raise AttributeError(f"'Student' object has no attribute '{name}'")

s = Student("Tom", 20)
print(s.name) # Tom
s.age = -1 # Raises ValueError: Age must be positive
print(s.score) # 90
print(s.weight) # Raises AttributeError: 'Student' object has no attribute 'weight'


在上面的例子中,我们使用了__setattr__()方法来限制年龄必须为正数,如果不满足条件则会抛出ValueError异常;同时,我们还使用了__getattr__()方法来模拟一个只读属性score并且当访问不存在的属性时会抛出AttributeError异常。