|
发表于 2024-4-10 19:42:10
|
显示全部楼层
`__get__()`和`__set__()`方法中使用字典是为了保存实例属性的值。实例属性是动态创建的,无法提前定义,所以需要使用字典来保存。
如果你想直接赋值而不使用字典,可以修改代码如下:
- class D:
- def __init__(self, name):
- self.name = name
- def __get__(self, instance, owner):
- print('get~')
- return getattr(instance, self.name)
- def __set__(self, instance, value):
- print('set~')
- setattr(instance, self.name, value)
复制代码
在`__get__()`方法中使用`getattr()`函数来获取实例属性的值,在`__set__()`方法中使用`setattr()`函数来设置实例属性的值。
这样修改后,当你访问实例属性时,会触发`__get__()`方法中的代码,并且返回实例属性的值。当你设置实例属性时,会触发`__set__()`方法中的代码,并将值赋给实例属性。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|